【问题标题】:Keeping user's Information in Custom membership & role provider in MVC 4 ASP.NET在 MVC 4 ASP.NET 中将用户信息保存在自定义成员和角色提供程序中
【发布时间】:2014-04-20 08:53:05
【问题描述】:

我用于在 Asp.net MVC 4 中实现自定义成员资格提供程序和角色提供程序以进行身份​​验证。

我关注了this blog

这个应用程序非常大而且非常敏感。我没有使用 MVC 的内置身份验证,我想实现自己的数据库架构。

我需要在不同页面上为同一用户提供不同的权限。例如,同一用户可能是一个页面上的管理员和另一个页面上的访客,一些用户可能具有读/写角色,而其他用户具有只读等。为此,我需要保留用户的信息,如用户名、用户 ID、 user_role 和其他一些个人资料信息,并在每次点击和网站上的每个页面上检查它们。

我的供应商工作正常,我只是有这些问题。

什么是最好的方式(在安全性和 CPU 处理方面)让我保留这些信息然后检查/比较它们

  1. 保持会话并到处检查?
  2. 保存在 cookie 中并到处检查?
  3. 不需要保存/保留,页面加载时从 db 获取并决定那个时间?
  4. 还有其他原因吗?
  5. 在 MVC 中,我需要在哪里进行此检查,此用户是否经过身份验证才能读取此页面/部分?(在每个控制器的索引操作中?)

【问题讨论】:

    标签: c# asp.net-mvc authentication


    【解决方案1】:
    1. 在 MVC 中,您检查所有操作,而不仅仅是 Index()。攻击者可以按任何顺序进行任何操作。
    2. 如果服务器重新启动工作进程,会话可能随时丢失。
    3. 将敏感信息放入 cookie 充其量是危险的。您需要对信息进行防篡改。
    4. 在每次请求时从数据存储区重新加载角色几乎是现有角色提供程序的工作方式。
    5. 您真的应该考虑编写一个 cuatom MembershipProvider 和 RoleProvider,然后在控制器操作上简单地使用普通的 [Authorize()] 指令。这样一来,您的应用程序将来更易于管理。

    【讨论】:

    • 你没有建议我关注哪一个?要么保持会话,要么在每次请求时从数据存储中重新加载角色。但最后一个需要处理时间。
    【解决方案2】:

    不要被这些深奥的问题迷惑了。您需要的所有东西都由 Microsoft 会员提供者准备。您只需要根据您的场景存储用户数据和分配给他们的角色。由于在 Asp.net MVC 进度期间我们有 2 个名为 Katana and Owin 的成员资格提供程序。但是如果你想实现自己的会员提供程序,问题就不同了,查看以下链接可能会有用:

    1. How to configure Custom Membership and Role Provider using ASP.NET MVC4
    2. Custom Membership and Role provider in ASP.NET MVC 4
    3. How do I create a custom membership provider for ASP.NET MVC 2?
    4. How to configure Custom Membership Provider using ASP.NET MVC4 with external login like facebook, yahoo , google or other relying party accounts.

    【讨论】:

      猜你喜欢
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      相关资源
      最近更新 更多