我需要知道,如果我的身份驗證和會話管理方法是正確的。會話和登錄Node和AngularJS的用戶數據
我使用會話管理,因爲當我收到成功的身份驗證。來自節點服務器。我在$ window.sessionStorage中存儲了用戶數據(沒有任何傳遞的痕跡),並且如果用戶標記爲rememberMe(複選框),則也將數據存儲在$ window.localStorage中。
通過這個我能夠在不同的控制器中獲取數據。儘管我在服務器(nodeJs)的某個地方閱讀會話實現方面也是可能的。但我不確定如何與JSONToken身份驗證一起使用會話。
我正在使用 https://jasonwatmore.com/post/2015/12/09/MEAN-Stack-User-Registration-and-Login-Example.aspx 作爲一個學習的例子,但我無法理解它。
/app/app.js
爲什麼在run()方法?
// add JWT token as default auth header
$http.defaults.headers.common['Authorization'] = 'Bearer ' + $window.jwtToken;
,什麼是這樣的:因此,使用會話服務器端與智威湯遜那種失敗的使用目的
// manually bootstrap angular after the JWT token is retrieved from the server
$(function() {
// get JWT token from server
$.get('/app/token', function (token) {
window.jwtToken = token;
angular.bootstrap(document, ['app']);
});
});
/controllers/app.controller.js
// use session auth to secure the angular app files
router.use('/', function (req, res, next) {
if (req.path !== '/login' && !req.session.token) {
return res.redirect('/login?returnUrl=' + encodeURIComponent('/app' + req.path));
}
next();
});
// make JWT token available to angular app
router.get('/token', function (req, res) {
res.send(req.session.token);
});
// serve angular app files from the '/app' route
router.use('/', express.static('app'));
如何在sessionStorage和localStorage中存儲數據? –
你可以向我解釋我突出顯示的代碼部分 –
那些在客戶端上是好的。所以您只需從客戶端抓取它們,並在每次使用時將它們傳回服務器。然而,我會阻止在服務器端使用會話。瞭解使用localStorage可能會導致XSS攻擊,因此請確保在應用程序中使用適當的頭文件。雖然Angular有很多內置的防禦措施!我爲我的應用程序使用localStorage。你應該做的其他事情,沒有localStorage和sessionStorage的區別,只是根據需要過期/更新JWT。 –