在同一应用程序上使用 Passport Local 和 JWT 策略(在同一条路线上)
Posted
技术标签:
【中文标题】在同一应用程序上使用 Passport Local 和 JWT 策略(在同一条路线上)【英文标题】:Use Passport Local & JWT Strategy on same app (on same route) 【发布时间】:2017-05-11 13:06:51 【问题描述】:所以我的路线(用于'/dash')如下所示:
// validating using JWT
router.post('/dash', passport.authenticate('jwt', session: false), function (req, res)
res.json('success': true);
);
// validating using LOCAL
router.post('/dash', authenticationHelpers.isAuth, function (req, res)
res.json('success': true);
);
// authenticationHelpers.isAuth
function isAuth(req, res, next)
if (req.isAuthenticated())
return next();
res.status(401).json("authenticated": false);
那么,我如何在同一个应用程序上(在同一条路线上)同时使用 Local 和 JWT 策略?我如何将它们结合起来。
注意:本地为网页应用,JWT 为移动应用
【问题讨论】:
【参考方案1】:终于明白了。
修改isAuth函数:
function isAuth(req, res, next)
if (req.headers.authorization)
passport.authenticate('jwt', session: false, function (err, user, info)
if ((!err || !info) && user)
req.user = user;
return next();
res.status(401).json(authenticated: false, message: "Login expired.");
)(req, res, next);
else
if (req.isAuthenticated())
return next();
res.status(401).json(authenticated: false);
欢迎提出建议...
【讨论】:
以上是关于在同一应用程序上使用 Passport Local 和 JWT 策略(在同一条路线上)的主要内容,如果未能解决你的问题,请参考以下文章
讨论:本地存储中 Passport-local JWT Token 的关注
在 node.js 中使用 passport-local 和 bcrypt 检查和更新密码
找到一种使用 passport-local-mongoose 更新用户护照的方法