到目前为止我尝试过:
我将Web.config
放置在我要保护的文件夹中,其中包含以下内容,这些内容应仅授予对admin
,second_level
和third_level
用户的访问权限。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="admin"/>
<allow roles="second_level"/>
<allow roles="third_level"/>
<deny roles="first_level"/>
<deny roles="blocked"/>
<deny users="*" />
</authorization>
</system.web>
</configuration>
在主Web.config
中我放了:
<roleManager enabled="true" defaultProvider="myapp.App_Code.SecurityAppRoleProvider" cacheRolesInCookie="true" createPersistentCookie="false" cookieProtection="All">
<providers>
<clear />
</providers>
</roleManager>
自定义角色提供程序:
namespace myapp.App_Code
{
public class SecurityAppRoleProvider : System.Configuration.Provider.ProviderBase
{
public SecurityAppRoleProvider()
{
var i = 0; // breakpoint here will never be reached?
}
}
}
此时我正在努力解决一些问题:
<deny users="*" />
有效。 ASP.NET应用程序将我重定向到登录页面,这是我需要的行为。但Web应用程序不考虑角色。这意味着即使所有用户都是角色admin
的成员,也会阻止所有用户访问该页面。SecurityAppRoleProvider
永远不会被实例化,所以我想我需要在其他地方注册自定义角色提供者吗?答案 0 :(得分:0)
我将其放入主Web.config
以解决问题。
<roleManager enabled="true">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="DefaultConnection" applicationName="/your-app-name"/>
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/your-app-name"/>
</providers>
</roleManager>