Sti*_*gar 3 asp.net iis-7 integrated-pipeline-mode
我正在试验IIS7中静态内容的集成身份验证模式.我按照本文中的说明操作:http://aspnet.4guysfromrolla.com/articles/122408-1.aspx 如果我通过登录状态允许/拒绝访问(如文章中所述),它工作正常.但是,我想基于角色允许/拒绝访问(使用内置于角色提供程序中的ASP.NET).当我为web.config中的角色"Admin"设置允许规则并拒绝所有其他用户的规则时,即使我以管理员身份登录,我也无法访问静态文件.同一文件夹包含非静态内容(aspx页面),可根据角色提供程序信息进行访问.
有任何想法吗?
尝试将以下内容添加到您的<system.webServer> <modules>块中:
<configuration>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<remove name="UrlAuthorization" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
<remove name="DefaultAuthentication" />
<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
<remove name="RoleManager" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
</modules>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
该RoleManager位是关键,它不包含在我能找到的任何在线示例中.如果没有这个,用户的角色成员资格不会针对静态内容进行初始化,因此基于角色的授权将始终失败.
(免责声明:基于我对IIS的有限理解,我自己将它拼凑在一起,但似乎有效.)
编辑(回复你的评论):对不起,我不太了解RoleManager如何依赖其他模块.您可以通过查看c:\Windows\System32\inetsrv\config\applicationHost.config(至少是我的Windows Vista计算机上的过去)来查看默认的IIS配置,以查看加载模块的顺序(请注意默认情况下使用managedHandler将RoleManager限制为非静态内容),和MSDN涵盖了RoleManagerModule以及System.Web.Security命名空间中的其他模块,因此您可以在那里找到所需的内容.
| 归档时间: |
|
| 查看次数: |
3004 次 |
| 最近记录: |