| 2016.5.9 - 南京 | ionic |
使用spring security + oauth2的方式获取token,获取url:oauth/token,返回数据
{
"access_token": "6d1b0493-0723-4f2a-95cc-f314ae715ed9",
"token_type": "bearer",
"refresh_token": "81c81c50-507b-4a7e-9f24-cff24a6c3509",
"expires_in": 604799,
"scope": "read trust write"
}
使用localStorage保存token,并保存它的有效期
.factory('localStorageService', ['$window', function ($window) {
return {
saveToken: function(username, response) {
var createTime = new Date().getTime();
var profile = {
username: username,
access_token: response.access_token,
maxAge: response.expires_in,
createTime: createTime,
validTime: createTime + response.expires_in
};
$window.localStorage.setItem('profile', angular.toJson(profile));
},
isTokenExpired: function() {
var profile = $window.localStorage.getItem('profile');
if (profile) {
if (angular.fromJson(profile).validTime < new Date().getTime()) {
$window.localStorage.removeItem('profile'); // 移除过期的缓存令牌
return true;
} else {
return false;
}
}
return true; // 未发现登录缓存,直接返回过期,使用户直接跳转到登录页
}
}
}])
已经登录过的用户,在token有效期内,不用重复登录
// 校验缓存里的令牌是否过期
if (!localStorageService.isTokenExpired()) {
$state.go('tabsController.tasks');
return;
}