表单身份验证:基于用户类别的页面访问权限

时间:2012-09-19 17:37:05

标签: c# asp.net .net login web-config

我有两个页面:Members.aspxAdmins.aspx。我想让未登记的用户看到他们中的任何一个,任何登录的用户都看不到第一个,只有某些用户才能看到它们。

用户的类别(“成员”或“管理员”)在登录时从代码中检测到,并放入会话变量中。

我可以使用表单身份验证(基本上为described here)轻松授予任何已登录用户访问某个页面的权限,但我应该如何设计我的web.config以便不考虑用户名,而是他的类别?

请注意,用户可以随时更改其类别,因此我无法对其名称进行硬编码,我需要将其与数据库无关,因此我将坚持使用Forms Authentication登录模式。

3 个答案:

答案 0 :(得分:1)

你真的应该研究一下

Asp.net roles management

并且

Filtering Site-Map Nodes Based on Security Roles

比尝试根据会话值构建自己的安全机制更聪明。

答案 1 :(得分:1)

我的建议是使用基于角色的身份验证。用户可以拥有一个或多个角色。 .NET有一些类可以帮助您管理用户及其角色。

这是一个很好的教程:http://www.4guysfromrolla.com/articles/082703-1.aspx

祝你好运。

答案 2 :(得分:0)

您可以将页面放在按角色分组的文件夹中,并为每个文件夹创建一个Web.config:

对于您的管理区域,您可以使用:

<configuration>
   <system.web>
      <authorization>
         <allow roles="admin"/>
         <deny users="*"/>
      </authorization>
   </system.web>
</configuration>

对于您的会员区,您可以使用:

<configuration>
   <system.web>
      <authorization>
         <allow roles="admin"/>
         <allow roles="member"/>
         <deny users="*"/>
      </authorization>
   </system.web>
</configuration>