c# ASP.在自己的cookie中存储组权限

本文关键字:存储 权限 cookie ASP 自己的 | 更新日期: 2023-09-27 18:19:07

我正在使用MVC5 Web API 2, ASP的无状态设计。网络应用程序。

用户角色由管理员通过选择权限创建。应用程序中的每个用户被分配一个自定义用户角色,一个角色可以在用户之间共享。

Razor视图是基于用户角色中的权限构建的。MVC和API控制器的可用性取决于用户角色中的权限。

对于每个对服务器的请求,都需要处理用户权限。我可以想到两种方法:

  1. 在role声明中存储用户角色的id,并执行数据库查找以检索每个页面加载/请求的权限。
  2. 在用户登录时,检索分配给用户角色的所有权限,将它们序列化为JSON并将它们存储在身份验证声明中。然后在每次页面加载/请求时,将JSON反序列化回对象并处理权限。

哪一个是更好的选择?

选项1比选项2慢得多。在cookie中存储权限是否存在安全风险?有没有更好的或替代的解决方案,既快速又安全。

c# ASP.在自己的cookie中存储组权限

将权限和其他敏感数据存储在cookie中总是是一个非常糟糕的主意,因为操作它们非常容易。信任cookie需要额外的服务器端检查,这违背了将其存储在cookie中的目的。

你最好只相信在你控制下的数据,也就是数据库中的数据。

根据您的应用程序,延迟评估权限可能是有用的,只有当你真的需要访问它们,如果性能影响太大。请记住,你可以使用像Redis这样的东西来显著提高性能。

因此,根据你的应用,我可能会选择选项1因为这是更安全的方法