我如何在sailsjs上使用jwt检查用户是不是是管理员
Posted
技术标签:
【中文标题】我如何在sailsjs上使用jwt检查用户是不是是管理员【英文标题】:How do i check if user is admin using jwt on sailsjs我如何在sailsjs上使用jwt检查用户是否是管理员 【发布时间】:2018-08-10 04:59:00 【问题描述】:我在服务器端使用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();
);
;
【问题讨论】:
【参考方案1】:执行 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
是管理员:
if (req.auth === ADMIN_LEVEL) next()
else res.forbidden()
是用户:
if (req.auth === USER_LEVEL) next()
else res.forbidden()
您的政策:
someControllerMethod: [setJwt, isAdmin]
当然,您需要在数据库中添加一个int
甚至是一个标志isadmin
才能使其工作。并且令牌需要保存这些信息!
【讨论】:
以上是关于我如何在sailsjs上使用jwt检查用户是不是是管理员的主要内容,如果未能解决你的问题,请参考以下文章
SailsJS - 将sails.io.js 与JWT 一起使用
如何在 Laravel 和 Vue.js 中使用 jwt-auth 检查用户是不是经过身份验证