2016-07-22 7 views
0

私はログアウトページの問題に直面しています。ログアウトオプションがページからクリックされると、ログインページがロードされなければならず、ユーザーがブラウザの前のページ矢印をクリックしようとしても、表示する必要があります。私は解決策を与えなかった$window.location.reload();sessionStorage.clear();を使って試しました。ログアウトページAngularJS

私はログインページを表示するログアウトページを持っていますが、バックページをクリックすると、以前にログインしたユーザーの詳細がすべて利用できます。以下のコードである:

のindex.html:

<body ng-app="app"> 
<div class=" "> 
    <div ui-view></div> 
</div> 
</body> 

login.htmlと:

<form ng-submit=submit()> 
    <input type="text" name="username" placeholder="Username" ng-model="person.firstName" required /> 
    <input type="password" name="pswd" placeholder="Password" ng-model="person.pswd" required /> 
     <div class="submit"> 
      <input type="submit" value="LOGIN"> 
     </div> 
    </form> 

page.html:

<ul> 
<li><a ui-sref="logout">Logout</a></li> 
</ul> 

app.js:

var app = angular.module('app', ['ui.bootstrap', 'LocalStorageModule']); 
app.config(function ($stateProvider, $urlRouterProvider) { 
$urlRouterProvider.otherwise('/login'); 
$stateProvider 
      .state('page', { 
      url: '/page/:id', 
      templateUrl: 'page.html' 
       }) 
     .state('login', { 
      url: '/login', 
      templateUrl: 'login.html', 
      controller: 'LoginCtrl' 
     }) 
     .state('tab', { 
      url: '/tab/:id', 
     templateUrl: 'views/tab.html' 
      }) 
    .state('logout', { 
     url: '/logout', 
     templateUrl: 'logout.html', 
     controller: 'LogoutCtrl' 
    }); 
    }); 
app.controller('LogoutCtrl', function ($scope, $http, $location, $state) { 
sessionStorage.clear(); 
$location.path('/login'); 
//this is loading login page, but if back arrow is clicked previous logged in details are present// 
}); 
app.controller('LoginCtrl', function ($scope, $http, $location, $state) { 
    $scope.submit = function() { 
     $http.get("url" + $scope.Name + "&Password=" + $scope.pswd) 
     .success(function (data, status, headers, config) { 
      debugger 
      $scope.tableData = data; 
      console.log(data) 
      if (data == 'Exception') { 
       window.alert('You have entered wrong username or password'); 

      } 
      else $state.go('tab', { id: data.Table[0].UserId }); 
     }) 

} 
}); 

要するに、ログアウト後、ログインページが表示されなければならず、ユーザーがバックページに移動しようとすると、ログインページだけが表示されます。

誰でも手伝っていただければ幸いです。

+0

あなたはLogoutCtrl' 'のコードを投稿してくださいもらえますか?どのようにuserDetailsを保存していますか?クッキーまたはローカル/セッションストレージ内ログアウト時にこれらの詳細をどのようにクリアしていますか?ルート(またはあなたのケースでは州)の変更をチェックしていますか? –

+0

@MridulKashyap:page.htmlはユーザーベースであり、ユーザーごとに異なります。私はpage.htmlを表示するためにログインの詳細を使用し、私はユーザーの詳細を格納するために何も使用しませんでした。 – Deborah

答えて

0

cookie、localStorage、SessionStorageなどのログイン情報をどこかに保存する必要があります。ユーザーがアクセスするためにログインする必要があるページにログインの詳細が存在するかどうかを確認します。 loggedInのようなフラグを設定したり、単にloginId/UserNameを使用することもできます。存在する場合は、ログインページを表示します。それ以外の場合は、ユーザーをログインページにリダイレクトします。 ユーザーがログインしているかどうかを確認する方法を教えてください。角度のstateChangeStartイベントを使用できます。 loginId/UserNameまたは設定したフラグが存在するかどうかを確認してください。はいの場合は、続行します。そうでない場合は、ログインにリダイレクトします。

ログアウトすると、これらの詳細がストレージから消去されます。

このLinkを参照すると、ユーザーの詳細をローカルストレージに保存するのに役立ちます。

0
<script src="bower_components/js/angular-local-storage.min.js"></script> 
... 
<script> 
    var myApp = angular.module('myApp', ['LocalStorageModule']); 

ジェクトlocalsotrageモジュールとのlocalStorageを作成してのlocalStorageはその後、存在する場合はログインページにメインページに向けて移動したり、他戻っていることを確認するために、メインコントローラの状態を確認します。 ログアウトすると使用できます

localStorageService.remove(key);お使いのコントローラですべて

をクリアする

myApp.controller('MainCtrl', function($scope, localStorageService) { 
var lsKeys = localStorageService.keys();//to show all values 
function submit(key, val) { 
return localStorageService.set(key, val); } 
function removeItem(key) { 
    return localStorageService.remove(key); } 
    }); 
+0

遅く返事して申し訳ありません。私はあなたの提案を試みたが、うまくいかなかった。どうすれば私のログインコントローラのローカルストレージの存在を確認できますか?質問のログインコントローラを更新しました。一度それをチェックし、ここにローカルストレージを実装する方法を教えてください。 – Deborah

+0

'MainCtrl'はどういう意味ですか?それはLoginCtrlですか?または私はtab.htmlで持っているコントローラ? – Deborah

+0

LoginCtrl –

関連する問題