C# 表单身份验证:基于用户的页面访问';s类

C# 表单身份验证:基于用户的页面访问';s类,c#,asp.net,.net,login,web-config,C#,Asp.net,.net,Login,Web Config,我有两个页面:Members.aspx和Admins.aspx。我想让未登录的用户看不到其中任何一个,任何登录的用户看第一个,只有某些用户同时看到这两个 在登录时从代码中检测到用户的类别(“成员”或“管理员”),并将其放入会话变量中 我可以使用表单身份验证(基本上是as)轻松地授予任何登录用户访问某个页面的权限,但是我应该如何设计我的web.config,以便不考虑用户名而是考虑他的类别 请注意,用户可以随时更改他们的类别,这样我就不能硬编码他们的名字,而且我需要这是独立于数据库的,所以我将坚持

我有两个页面:
Members.aspx
Admins.aspx
。我想让未登录的用户看不到其中任何一个,任何登录的用户看第一个,只有某些用户同时看到这两个

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

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


请注意,用户可以随时更改他们的类别,这样我就不能硬编码他们的名字,而且我需要这是独立于数据库的,所以我将坚持表单身份验证登录模式。

您真的应该研究一下


这比尝试基于会话值构建自己的安全机制更聪明。

您可以将页面放置在按角色分组的文件夹中,并为每个文件夹创建一个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>

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

<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>

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

这是一个很好的教程:


祝你好运。

如果你的类别==Membership.Role,你只能使用web.config。是这样吗?在第二个块中,这三个元素可以替换为
。谢谢,我确实想使用角色,因为这似乎是最可靠的解决方案,但我的主要问题是理解如何在登录时动态分配角色。
roles.AddUserToRole(“JoeWorden”,“manager”)按照第一个链接查看完整信息。