不使用数据库(也不使用角色提供程序)的ASP.NET MVC角色

3
我有一个超级简单的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. 有没有一种不使用Membership / Role提供程序的方法来实现这一点?
  4. 我是否从错误的角度考虑了这个问题?我应该将应用程序分成两个分支,并根据文件夹授权对它们进行保护吗?
2个回答

3
我不喜欢将授权数据存储在web.config中,我更喜欢将其存储在数据库或其他xml文件中。
请查看Xml Membership / Role Provider。它使用Membership / Role来读取用户数据,但它展示了一种从xml文件中存储和读取用户授权数据的方法。
分支应用程序并不能解决问题,只会将问题转移。

我实现了一个自定义角色提供程序。顺便说一句,我不喜欢默认的Membership表结构,特别是对于OpenID。 - Rebecca

0

请记住,整个权限管道仍然围绕IPrincipals展开,角色/成员提供程序只是窗口装饰,允许大多数应用程序不必编写该管道代码。在这种情况下,您可以轻松地添加一个基于数据库的(或者如果列表足够短,则为静态)角色列表和用户角色列表,并查询它们。将其封装在自定义的IPrincipal后面,并将其放置在适当的位置,您就可以得到完美的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接