【问题标题】:C# ASP.NET MVC - Storing group permissions in Owin cookieC# ASP.NET MVC - 在 Owin cookie 中存储组权限
【发布时间】:2015-10-24 12:46:55
【问题描述】:

我正在为 MVC5 Web API 2、ASP.NET 应用程序使用无状态设计。

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

Razor 视图的结构基于用户角色中的权限。 根据用户角色的权限,可以使用 MVC 和 API 控制器。

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

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

以下哪个是更好的选择?

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

【问题讨论】:

    标签: c# asp.net cookies owin claims


    【解决方案1】:

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

    您最好只信任受您控制的数据,也就是您数据库中的数据。

    根据您的应用程序,如果性能影响太大,仅当您确实需要访问权限时才延迟评估权限可能很有用。请记住,您可以使用 Redis 之类的东西来显着提高性能。

    同样,根据您的应用程序,我可能会选择选项 1,因为它是更安全的方式。

    【讨论】:

      猜你喜欢
      • 2017-04-30
      • 2014-11-24
      • 2015-02-14
      • 2012-02-27
      • 2015-02-12
      • 2017-10-31
      • 2020-12-12
      • 1970-01-01
      • 2011-05-16
      相关资源
      最近更新 更多