我使用Angular JS开发了一个
Spring Web应用程序.对于当前项目,客户端身份验证使用Cookie.
在了解了JWT的优势后,
我使用JWT(Json Web Token)重写了应用程序身份验证.
我关心的是如何在AngularJS中使用JWT处理“Rember Me”功能而不使用Cookies功能或Laravel支持.
如果您的任何人都可以分享我的建议或示例代码.这真的很有帮助.我尝试搜索互联网,但没有得到一个示例实现来引用.
谢谢.
最佳答案 在客户端存储JWT的选项之一可以是
window.localStorage,其存储没有到期日期的数据.
然后,使用每个$http请求(在Authentication头中),使用Interceptor将此令牌发送到服务器,如下所示,
angular.module('myApp').factory('authInterceptor', ['$q', function ($q) {
return {
request: function (config) {
config.headers = config.headers || {};
if (config.headers.skipAuthorization === false) {
var token = localStorage.getItem('authenticationToken');
if (token != null) {
config.headers.Authorization = token;
}
}
return config;
},
response: function (response) {
if (response.headers("Authorization") != undefined || response.headers("Authorization") != '') {
localStorage.setItem('authenticationToken', response.headers("Authorization"));
}
return response;
},
responseError: function (rejection) {
if (rejection.status === "401") {
localStorage.removeItem('authenticationToken');
}
return $q.reject(rejection);
}
};
} ]);
angular.module('myApp').config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
} ]);
并且对于您希望将此令牌发送到服务器的每个请求,请在标头中设置skipAuthorization:false,
$http({
....
headers:{skipAuthorization:false}
}).then(....)