我想为每个api调用授权用户。
例如:
app.post('/user', isAuth('user.write'), controller);
以上api需要具有user.write
角色,因此如何在用户每次具有此角色时进行检查? isAuth函数验证该用户。
按照我的说法,我们可以在登录Redis时保存所有用户角色,在每个api调用中,我们都可以从Redis中获取它。
但是角色比1500多,难道不是很沉重吗?还是应该为每个api检查数据库?
还是其他更好的方法,以便我可以轻松地为用户验证每个api?
答案 0 :(得分:0)
您可以利用JWT tokens。
然后,您的API将向具有角色的用户发行JWT令牌。
然后,用户为每个请求提供此令牌,而不必调用redis,因为您只需解码JWT令牌并从那里签出角色即可。
JWT令牌是由服务器签名的,不能由客户端修改,因此您知道角色是服务器实际提供的角色。
在this article中了解有关JWT安全性的更多信息
node-jsonwebtoken是一个流行的用于在节点中使用JWT令牌的库,在GitHub上有超过10000个星星。