如何在sailsjs上检查用户是否使用jwt管理员
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在sailsjs上检查用户是否使用jwt管理员相关的知识,希望对你有一定的参考价值。
我在我的服务器端使用sailsjs框架,在我的前端使用angularjs来构建SPA并使用jsonwebtoken进行令牌认证。我的用户api有以下信息:name:string,email:email,admin:Boolean,这是我用来生成令牌并发送到前端的信息,保存在localstorage中。我的问题是:如果用户是我服务器端的管理员,我怎么做才能验证(检查令牌是否已经准备就绪并且一切正常)
先感谢您。
在我当前的策略下检查服务器端的令牌
module.exports = function(req, res, next) {
var token;
if (req.headers && req.headers.authorization) {
var parts = req.headers.authorization.split(' ');
if (parts.length == 2) {
var scheme = parts[0],
credentials = parts[1];
if (/^Bearer$/i.test(scheme)) {
token = credentials;
}
} else {
return res.json(401, {
err: 'Format is Authorization: Bearer [token]'
});
}
} else if (req.param('token')) {
token = req.param('token');
// We delete the token from param to not mess with blueprints
delete req.query.token;
} else {
return res.json(401, {
err: 'No Authorization header was found'
});
}
sailsTokenAuth.verifyToken(token, function(err, token) {
if (err) {
console.log('ERR estou em tokenauth policies');
return res.json(401, {
err: 'The token is not valid'
});
}
req.token = token;
next();
});
};
答案
做3个政策:
- SetJwt:`req。
sailsTokenAuth.verifyToken(token, function(err, token) { if (err) { console.log('ERR estou em tokenauth policies'); return res.json(401, { err: 'The token is not valid' }); } else req.token = token }
- isAdmin:
if (req.auth === ADMIN_LEVEL) next() else res.forbidden()
- isUser:
if (req.auth === USER_LEVEL) next() else res.forbidden()
你的政策:
someControllerMethod: [setJwt, isAdmin]
当然,您需要在数据库中添加int
甚至标志isadmin
才能使用。令牌需要保存这些信息!
以上是关于如何在sailsjs上检查用户是否使用jwt管理员的主要内容,如果未能解决你的问题,请参考以下文章
SailsJS - 将sails.io.js 与JWT 一起使用
我们如何知道用户是不是仍然在使用 VUE/Django/JWT?