2009-08-20 139 views
3

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

我有两个单独的 “编辑帐户” 的观点:

  • 〜/帐号/编辑/
  • 〜/帐号/编辑/ 1

第一负载帐户详细信息基础上登录的用户。第二个使用提供的AccountId加载帐户详细信息。第一个是标准用户,第二个是管理员。首先,我需要定义角色(用户,管理员),然后我需要为该角色分配一个用户帐户(或多个)。

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

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

所以,下到的问题:

  1. 有没有一种简单的方法来定义在web.config中的角色列表?
  2. 有没有简单的方法来定义哪些用户在web.config中的哪些角色?
  3. 有没有办法做到这一点,而不使用会员/角色提供者?
  4. 我从错误的角度来看待这个吗?我应该将应用程序分成两个分支并根据文件夹授权进行保护吗?

回答

3

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

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

修补应用程序woulded移动的问题,而不是解决。

+0

我实现了一个自定义角色提供程序。在旁注中,我并不喜欢默认的Membership表结构,特别是对于OpenID。 – Junto 2009-08-21 08:49:44

0

请记住,整个权限管道仍然围绕着IPrincipals进行,角色/成员资格提供者只是修饰窗口以允许大多数应用程序不必编写管道代码。在这种情况下,您可以轻松地添加一个数据库支持的(或者只是列表足够短的静态)角色列表以及角色中的用户列表并查询该列表。将它包装在一个定制的IPrincipal后面,并在适当的地方将那只小狗放在那里,而你是金黄色的。