【发布时间】:2018-10-22 20:53:54
【问题描述】:
在我的项目中,我使用 Angular 5、nodejs、JWT 来签署令牌,并使用 passport.js 来管理身份验证(令牌解码)。在后端,当我使用 Angular 拦截器时,身份验证工作得很好,它会在拦截 http 请求时自动设置标头。
假设我正在访问 /user/profile,这是我在节点中的受保护路由,如果我直接在浏览器中键入受保护路由(完整 url http://localhost:3000/user/profile),我如何才能设法授予已通过身份验证的用户访问该页面,而不是来自 passport.js 的未经授权的消息,当然在标头中看不到任何令牌(正文,查询都不)?
我管理它的唯一方法是创建这条路线:
router.get('/isauthenticated', passport.authenticate('jwt', {session: false}), function (req, res) {
res.json({
id: req.user.id,
email: req.user.email
});
});
并在 ProfileComponent 的“ngOnInit”中调用它。如果 /isauthenticated 顺利,那么我让用户访问个人资料页面。 我认为这个解决方案是一种解决方法,绝对不优雅......所以我的问题是,除了使用或不使用passport.js:
是否可以在 Angular 中使用 JWT 身份验证并使用 nodejs 保护路由,然后让已经通过身份验证的用户(当然,它有一个未过期的令牌)进入受保护的路由,即使他直接在浏览器中输入网址?
请告诉我,即使您使用其他东西而不是 passport.js,或者我是否必须使用其他策略。
【问题讨论】:
标签: node.js angular authentication jwt passport.js