我正在使用后端的Node.js(Express)服务器和前端的Angular.js构建一个Web /移动应用程序。我正在使用护照进行会话,我在客户端授权验证方面遇到了一些问题。
在用户登录时,服务器使用包含一些会话信息(如用户名和角色)的json cookie进行响应。我想使用angular.js路由授权来限制基于命中角色的用户访问。在每次重定向时,我首先检查cookie。如果cookie在那里并且用户的角色与路径的访问要求匹配,则一切正常并且重定向完成。如果从客户端到服务器端的某些请求因未授权响应而失败,会话cookie将被删除,等等......
问题是什么...服务器端有很多会话验证,但检查客户端的cookie不是很安全。每个人都可以看到cookie格式(这是一个简单的json)并改变它。例如,每个人都可以将cookie的角色属性更改为“admin”,并且只有通过cookie验证,客户端才能访问管理员的面板视图。只能访问视图!使用此cookie向后端发出的进一步请求将失败,但让他们访问这些视图并不好......
服务器使用SSL协议,但这只加密通信,客户端存储的cookie不加密。
我在考虑将已发送的cookie加密,并将客户端解密以进行授权验证。但是,如果用户存储在平面文本中,则用户可以打开客户端js文件并找出解密密钥。如果服务器将密钥发送到客户端,并且客户端将其存储在变量中,则密钥将对用户不可见,但在页面刷新时将丢失。将它保存在cookie中并不是很聪明:D
当然,客户端可以向服务器发送授权请求以进行每次授权验证,但这可能是很多请求。
你能提出我的一些解决方案吗?
非常感谢你,祝你有个美好的一天:)