我正在使用表单身份验证,我想将某些页面限制为某些角色。现在,每个人都可以在登录后访问整个应用程序。
但我想将某些页面限制为某些角色。例如,“查看日志”页面。
我认为我的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属性?
答案 0 :(得分:1)
您可以在global.asax中连接HttpApplication
实例的AuthenticateRequest
事件。在该上下文中,您需要配置IPrincipal
实现以获得所需的设置。最简单的方法是实例化RolePrincipal
并设置User
的{{1}}属性。
更新我刚刚查看了我在之前的答案中发布的一些示例实现。有一个基于ASP.NET MVC,另一个基于Web窗体。
Web表格实施在Global.asax中汇总:IsAuthenticated is false! weird behaviour + review question
MVC实施使用动作过滤器:Very simple single user login in ASP.NET MVC2?
答案 1 :(得分:0)
使用基于位置的设置。
<configuration>
<location path="Logon.aspx">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
</configuration>
有关详细信息,您可以在MSDN
上进行漫游