3

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

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

我在想我的 web.config 文件应该是这样的:

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

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

我怎样才能关联

<allow roles="super, admin"/> 

在我的 webconfig 中位到 User 对象的角色属性?

4

2 回答 2

1

您可以连接到global.asaxAuthenticateRequest中的实例事件。HttpApplication在这种情况下,您需要将IPrincipal实现配置为具有所需的设置。最简单的方法是实例化 a并RolePrincipal设置User.HttpContext

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

于 2012-08-16T13:07:06.977 回答
0

使用基于位置的设置。

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

有关更多信息,您可以在MSDN上进行演练

于 2012-08-16T13:08:56.133 回答