Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – Node.js / Angular.js管理员授权的路由大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 JSON Web令牌进行身份验证的MEAN应用程序.基本上每个请求,我都在检查用户是否有有效的令牌.如果是这样,他们可以进入路线,否则他们将返回登录页面.

我想让某些路由/ admin / etc …只能由也是admin的登录用户访问.我在mongo中设置了一个isAdmin标志.我是nodejs的新手,想知道检查这个的最佳方法是什么.我是否在路线的角度边做?或者我可以以某种方式创建基于权限的身份验证令牌?作为参,我遵循MEAN机器书中的代码,特别是在这里

https://github.com/scotch-io/mean-machine-code/tree/master/17-user-crm

解决方法

首先,必须在服务器端完成授权决策.如你所建议的那样在Angular.js中在客户端执行它也是一个好主意,但这只是为了改善用户体验,例如没有向用户显示他们无法访问的内容链接.

使用JWT,您可以在令牌中嵌入有关用户的声明,如下所示:

var jwt = require('jsonwebtoken');
var token = jwt.sign({ role: 'admin' },'your_secret');

要映射表达路由的权限,可以使用connect-roles构建清晰且可读的授权中间件功能.假设您的JWT是在http标头中发送的,并且您拥有以下(天真)授权中间件:

// Naive authentication middleware,just for demonstration
// Assumes you're issuing JWTs somehow and the client is including them in headers
// Like this: Authorization: JWT {token}
app.use(function(req,res,next) {
    var token = req.headers.authorization.replace(/^JWT /,'');
    jwt.verify(token,'your_secret',function(err,decoded) {
        if(err) {
            next(err);
        } else {
            req.user = decoded;
            next();
        }
    });
})

这样,您就可以在路由上强制执行授权策略,如下所示:

var ConnectRoles = require('connect-roles');
var user = new ConnectRoles();

user.use('admin',function(req) {
    return req.user && req.user.role === 'admin';
})

app.get('/admin',user.is('admin'),function(req,next) {
    res.end();
})

请注意,有更好的选择发布&验证JWT,如express-jwt,或使用passportpassort-jwt

大佬总结

以上是大佬教程为你收集整理的angularjs – Node.js / Angular.js管理员授权的路由全部内容,希望文章能够帮你解决angularjs – Node.js / Angular.js管理员授权的路由所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。