如何验证每个API以授权用户?

时间:2019-04-18 08:14:37

标签: node.js authentication redis authorization roles

我想为每个api调用授权用户。 例如: app.post('/user', isAuth('user.write'), controller);

以上api需要具有user.write角色,因此如何在用户每次具有此角色时进行检查? isAuth函数验证该用户。

按照我的说法,我们可以在登录Redis时保存所有用户角色,在每个api调用中,我们都可以从Redis中获取它。

但是角色比1500多,难道不是很沉重吗?还是应该为每个api检查数据库?

还是其他更好的方法,以便我可以轻松地为用户验证每个api?

1 个答案:

答案 0 :(得分:0)

您可以利用JWT tokens

然后,您的API将向具有角色的用户发行JWT令牌。

然后,用户为每个请求提供此令牌,而不必调用redis,因为您只需解码JWT令牌并从那里签出角色即可。

JWT令牌是由服务器签名的,不能由客户端修改,因此您知道角色是服务器实际提供的角色。

this article中了解有关JWT安全性的更多信息

node-jsonwebtoken是一个流行的用于在节点中使用JWT令牌的库,在GitHub上有超过10000个星星。