gpt4 book ai didi

javascript - 同一应用中的多个 passport-jwt 策略

转载 作者:搜寻专家 更新时间:2023-10-31 23:29:56 24 4
gpt4 key购买 nike

如何使用不同的密码创建两个不同的 passport-jwt 并使用它来验证两个不同的 Angular 色?

例子:

var passport_admin = require('../../node_modules/passport'); 
var passport_user = require('../../node_modules/passport');

require('../auth_layer/admin_jwt_auth')(passport_admin);
require('../auth_layer/user_jwt_auth')(passport_user);

app.post('/admin/profile',passport_admin.authenticate('jwt',{session:false}), business_admin.post_profile);

app.post('/user/profile',passport_user.authenticate('jwt',{session:false}), business_admin.post_profile);

当我执行上述操作时它不起作用(验证 token 时为 401),因为我在我的路由中需要两个不同的身份验证中间件。

我怎样才能做到这一点?或者这样做有意义吗?

感谢您的帮助。

最佳答案

我和你有完全相同的问题,但经过多次研究、试验和错误,我找到了解决这个问题的自己的方法,并想与你分享。首先在下面的语法中,只会执行一个规则:

    var passport_admin = require('../../node_modules/passport'); 
var passport_user = require('../../node_modules/passport');

将使用的规则只有最新,即passport_user。要解决这个问题,您需要转到您的 passport.js api 并创建两个具有不同名称的护照规则(在同一个 js 文件中),如下所示

    passport.use('admin-rule',
new JwtStrategy(opts, (...........) => {.........
}));

passport.use('user-rule',
new JwtStrategy(opts, (...........) => {.........
}));

然后您想在管理语法中使用“admin-rule”,与用户语法的想法相同(使用“user-rule”)。

    app.post('/admin/profile',passport_admin.authenticate('admin-rule'
{session:false}), business_admin.post_profile);

这样您的管理员和用户将在其路由器上使用指定的通行证规则。

关于javascript - 同一应用中的多个 passport-jwt 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39795898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com