0
我正在研究一個Web應用程序,其中我正在嘗試實現用於安全性的jwt身份驗證。我將生成的令牌發送到客戶端並將其保存在標題中,但是當我發送http請求時,頭部在服務器端顯示爲空。jsonwebtoken中標題中的標記設置和驗證
這是服務器端代碼部分登錄模塊。
var profile = {
name:rows[0].name,
email:rows[0].email,
role:rows[0].role_id
};
var token = jwt.sign(profile,'shhhhhhared-secret',{expiresInMinutes: 60*5 });
res.json({
success: true,
user: rows[0], //userobject
token: token
});
這是我們在sesssionstorage中設置響應的控制器部分。
dbServices.UserAuthenticate($scope.email,
$scope.password).then(function(response) {
$rootScope.showLoader = false;
if (response.data.success) {
var session_data = {
'token':response.data.token,
'user':{
'name':response.data.user.name,
'role':response.data.user.role_id,
'email':response.data.user.email
}
};
sessionStorage.sessionData = JSON.stringify(session_data);
$location.path('/');
} else {
$scope.msg = 'Invalid Email or Password!'
}
})
這是配置文件我在哪裏設置頁眉
App.factory('authInterceptor', ['$rootScope', '$q', '$window',
function($rootScope, $q, $window) {
return {
request: function(req) {
req.headers = req.headers || {};
if (sessionStorage.sessionData.token) {
req.headers.Authorization = 'Bearer ' + sessionStorage.sessionData.token;
}
return req;
},
response: function(response) {
if (response.status == 401) {
console.log('header auth 401 login');
$window.location = '/login';
}
return response || $q.when(response);
}
}
}
]);
App.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
});
我沒有得到什麼在這個去錯了。有人能幫助我嗎?
貌似sessionStorage的是未定義....您可能需要注入它。 – Gary