使用没有“Membership”表的角色身份验证

时间:2012-08-16 13:01:41

标签: c# .net web-config forms-authentication roles

我正在使用表单身份验证,我想将某些页面限制为某些角色。现在,每个人都可以在登录后访问整个应用程序。

但我想将某些页面限制为某些角色。例如,“查看日志”页面。

我认为我的web.config文件应如下所示:

<location path="logs/view/">
<system.web>
  <authorization>
    <allow roles="super, admin"/>
  </authorization>
</system.web>

但我的问题是,底层应用程序的构建方式,当用户通过api调用成功登录时,我返回了一个“User”onbject,该用户的角色是该对象的一部分(User.Role ==“管理员“)。我实际上没有一个参考数据库表告诉APP用户有什么角色。

如何关联

<allow roles="super, admin"/> 

在我的webconfig中找到User对象的role属性?

2 个答案:

答案 0 :(得分:1)

您可以在global.asax中连接HttpApplication实例的AuthenticateRequest事件。在该上下文中,您需要配置IPrincipal实现以获得所需的设置。最简单的方法是实例化RolePrincipal并设置User的{​​{1}}属性。

更新我刚刚查看了我在之前的答案中发布的一些示例实现。有一个基于ASP.NET MVC,另一个基于Web窗体。

答案 1 :(得分:0)

使用基于位置的设置。

<configuration>
   <location path="Logon.aspx">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>

有关详细信息,您可以在MSDN

上进行漫游