PassportJs 身份验证允许两者(来宾和登录用户)进行操作
PassportJs authentication for action allowed to both ( guest and logged in user )
我是 expressJs 和 PassportJS 的新手,试图实现 API 一个 return 用户的所有基本细节,即
{
isUserLogin: true or false,
allowedActions: [],
applicationUrl: [],
pageComponents: [],
settings: []
}
所以我面临的问题是,如果我实施 passport.js,来宾用户将获得未授权。下面是我的代码。
router.js
authRoutes.get('/init', passport.authenticate('bearer', { session: true }), authController.init);
controller.js
exports.init = (req, res) => {
//here is my login to get params. Guest user not able to reach it.
res.status(200).send(params);
};
我认为这一定是路由器级别的简单设置,但无法为此获得适当的文档。我坚持了 6 天以上。任何可以引导我走向正确方向的建议都会有所帮助。
提前致谢。
这就是 passport-anonymous
的目的。
安装:npm install passport-anonymous
然后使用策略
const AnonymousStrategy = require('passport-anonymous').Strategy;
passport.use(new AnonymousStrategy());
然后在您的路线上,传递身份验证策略数组而不是字符串:
authRoutes.get('/init', passport.authenticate(['bearer', 'anonymous'], { session: true }), authController.init);
并且在控制器上,您可以通过检查req.user
对象来检查用户是否登录。请记住,您必须在数组
中的 bearer
之后放置 anonymous
exports.init = (req, res) => {
if (req.user) {
console.log("Logged in");
} else {
console.log("Guest");
}
res.status(200).send(params);
};
我是 expressJs 和 PassportJS 的新手,试图实现 API 一个 return 用户的所有基本细节,即
{
isUserLogin: true or false,
allowedActions: [],
applicationUrl: [],
pageComponents: [],
settings: []
}
所以我面临的问题是,如果我实施 passport.js,来宾用户将获得未授权。下面是我的代码。
router.js
authRoutes.get('/init', passport.authenticate('bearer', { session: true }), authController.init);
controller.js
exports.init = (req, res) => {
//here is my login to get params. Guest user not able to reach it.
res.status(200).send(params);
};
我认为这一定是路由器级别的简单设置,但无法为此获得适当的文档。我坚持了 6 天以上。任何可以引导我走向正确方向的建议都会有所帮助。
提前致谢。
这就是 passport-anonymous
的目的。
安装:npm install passport-anonymous
然后使用策略
const AnonymousStrategy = require('passport-anonymous').Strategy;
passport.use(new AnonymousStrategy());
然后在您的路线上,传递身份验证策略数组而不是字符串:
authRoutes.get('/init', passport.authenticate(['bearer', 'anonymous'], { session: true }), authController.init);
并且在控制器上,您可以通过检查req.user
对象来检查用户是否登录。请记住,您必须在数组
bearer
之后放置 anonymous
exports.init = (req, res) => {
if (req.user) {
console.log("Logged in");
} else {
console.log("Guest");
}
res.status(200).send(params);
};