【问题标题】:ASP.NET MVC Roles without database (and without role provider)没有数据库的 ASP.NET MVC 角色(并且没有角色提供程序)
【发布时间】:2010-11-21 05:38:03
【问题描述】:

我有一个超级简单的 ASP.NET MVC 应用程序,它使用 RpxNow (OpenID) 来允许用户登录。我现在想让用户编辑他们自己的帐户并提供管理员访问权限来编辑任何人的帐户。

我有两个单独的“编辑帐户”视图:

  • ~/account/edit/
  • ~/account/edit/1

第一个加载基于登录用户的帐户详细信息。第二个使用提供的 AccountId 加载帐户详细信息。第一个适用于标准用户,第二个适用于管理员。

首先我需要定义角色(用户、管理员),然后我需要为该角色分配一个(或多个)用户帐户。

然后我需要检查控制器中的角色。我喜欢这个概念:

http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/

所以,归结为问题:

  1. 是否有一种简单的方法可以在 web.config 中定义角色列表?
  2. 是否有一种简单的方法可以在 web.config 中定义哪些用户属于哪些角色?
  3. 有没有办法在不使用成员资格/角色提供者的情况下做到这一点?
  4. 我是不是从错误的角度来处理这个问题?我应该将应用程序分成两个分支并根据文件夹授权保护它们吗?

【问题讨论】:

    标签: asp.net-mvc configuration roles


    【解决方案1】:

    我不喜欢在 web.config 中存储授权数据。我更喜欢将其存储在数据库或其他 xml 文件中。

    看看Xml Membership / Role Provider。这使用 Membership / Role 来读取用户数据,但它显示了一种从 xml 文件存储和读取用户授权数据的方法。

    将应用程序连接起来会转移问题而不是解决问题。

    【讨论】:

    • 我实现了一个自定义角色提供程序。附带说明一下,我不喜欢默认的 Membership 表结构,尤其是 OpenID。
    【解决方案2】:

    请记住,整个权限管道仍然围绕 IPrincipal 进行,角色/成员资格提供程序只是装点门面,让大多数应用程序不必编写该管道代码。在这种情况下,您可以轻松地添加一个数据库支持的(或者如果列表足够短,则只是静态的)角色列表和角色中的用户列表并进行查询。把它包在一个自定义的 IPrincipal 后面,然后在适当的地方把小狗塞进去,你就很成功了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-18
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      相关资源
      最近更新 更多