我一直在关注使用 ionic 进行身份验证的登录教程。但是当我尝试运行该程序并登录时,错误是:
ReferenceError:令牌未定义
在 storeUserCredentials (services.js:16)
在 services.js:46
在 Object.login (services.js:44)
有人可以帮助我吗?这是我的服务:
app.service('AuthService', function($q, $http, USER_ROLES){
var LOCAL_TOKEN_KEY = 'yourTokenKey';
var username = '';
var isAuthenticated = false;
var role = '';
var authToken;
function loadUserCredentials() {
var token = window.localStorage.getItem(LOCAL_TOKEN_KEY);
if (token) {
useCredentials(token);
}
}
function storeUserCredentials(){
window.localStorage.setItem(LOCAL_TOKEN_KEY, token);
useCredentials(token);
}
function useCredentials(token){
username = token.split('.')[0];
isAuthenticated = true;
authToken = token;
if (username == 'admin') {
role = USER_ROLES.admin
}
if (username == 'user') {
role = USER_ROLES.public
}
$http.defaults.header.common['X-Auth-Token'] = token;
}
function destroyUserCredentials(){
authToken = undefined;
username = '';
isAuthenticated = false;
$http.defaults.header.common['X-Auth-Token'] = undefined;
window.localStorage.removeItem(LOCAL_TOKEN_KEY);
}
var login = function(name, pw){
return $q(function(resolve,reject){
if ((name == 'admin' && pw == '1') || (name =='user' && pw == '1')){
storeUserCredentials(name +'.yourServerToken');
resolve('Login Success');
} else {
reject('Login Failed');
}
});
};
var logout = function(){
destroyUserCredentials();
};
var isAuthorized = function(authorizedRoles){
if (!angular.isArray(authorizedRoles)){
authorizedRoles = [authorizedRoles];
}
return (isAuthenticated && authorizedRoles.indexOf(role))
};
loadUserCredentials();
return {
login : login,
logout : logout,
isAthorized : isAuthorized,
isAuthenticated : function() {return isAuthenticated;},
username : function() {return username;},
role : function(){return role;}
};
})
.factory('AuthInterceptor', function ($rootScope, $q, AUTH_EVENTS) {
return {
responseError: function (response) {
$rootScope.$broadcast({
401: AUTH_EVENTS.notAuthenticated,
403: AUTH_EVENTS.notAuthorized
}[response.status], response);
return $q.reject(response);
}
};
})
.config(function ($httpProvider) {
$httpProvider.interceptors.push('AuthInterceptor');
});
你已经创建了token
函数内部loadUserCredentials
所以它不可用other functions
.你需要使其全球化。
var token ="";
function loadUserCredentials() {
token = window.localStorage.getItem(LOCAL_TOKEN_KEY);
if (token) {
useCredentials(token);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)