2016-12-24 82 views
-1

我创建了一个角度应用程序,我使用jwt来验证每个api调用服务器。在客户端,一旦用户登录,我在localStorage中将loggedIn设置为true。然后在ui路由器上使用AuthService stateChangeStart事件,该事件检查localStorage中的loggedIn是否为true。使用localStorage的AngularJS身份验证

我见过很多例子,他们在localStorage中保存用户名,稍后检查用户名是否设置,或者不知道用户是否被认证。但我的问题是,localStorage可以调节,任何人都可以将用户名属性设置为某个值或将loggedIn设置为true。

你对此的想法是什么,有什么我失踪了。

+0

你能分享你的代码 – Codesingh

回答

0

我做的是什么,只要令牌存储在localStorage的或更好的节省头JSON如下

if (response.data.token) // response for successful login 
    { 
    let headers = { 
     ContentType : 'application/json', 
     access-token : response.data.token, 
     anyOtherHeader: 'xxx' 
    } 

    window.localStorage.setItem('headers',JSON.stringify(headers)); 
    } 

,只是检查这个每当应用程序加载,如果它存在,如果它保持的方式它在$ rootScope

let headers = window.localStorage.getItem('headers'); 
if(headers){ 
    $rootScope.headers = JSON.parse(headers); 
    $timeout(function(){$scope.$apply()}) //to update your app about token 
} 

,每当您的令牌不被认证/未验证/注销从localStorage的删除它和$ rootScope

window.localStorage.removeItem('headers') 
$rootScope.headers = undefined; 
$timeout(function(){$scope.$apply()}); //again to update your app about it 

通过适当的错误处理,它对我很好。虽然它可以锻炼,但不能被滥用。让我知道如果这有助于:)

相关问题