我需要知道,如果我的身份验证和会话管理方法是正确的。会话和登录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。 –