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);
};