如何使用Identity framework在C#和ASP.NET中配置基于角色的访问权限?

如何使用Identity framework在C#和ASP.NET中配置基于角色的访问权限?,c#,asp.net,asp.net-mvc,asp.net-identity,asp.net-roles,C#,Asp.net,Asp.net Mvc,Asp.net Identity,Asp.net Roles,到目前为止,我所尝试的: 我将Web.config放在一个文件夹中,我想用以下内容保护它,这些内容应该只授予admin、second\u level和third\u level用户访问权限 <?xml version="1.0"?> <configuration> <system.web> <authorization> <allow roles="admin"/> <allow roles="

到目前为止,我所尝试的:

我将
Web.config
放在一个文件夹中,我想用以下内容保护它,这些内容应该只授予
admin
second\u level
third\u 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>
自定义角色提供程序:

 namespace myapp.App_Code
{
    public class SecurityAppRoleProvider : System.Configuration.Provider.ProviderBase
    {
        public SecurityAppRoleProvider()
        {
            var i = 0; // breakpoint here will never be reached?
        }

    }
}    
在这一点上,我正在努力解决一些问题:

  • 工作正常。ASP.NET应用程序将我重定向到登录页面,这是我需要的beahvior。但是web应用程序不考虑角色。这意味着当前阻止所有用户访问该页面,即使他们是role
    admin
    的成员
  • securityapprovider
    将永远不会实例化,因此我想我需要注册自定义角色提供程序,其他位置
  • 是否有默认角色提供程序,该提供程序应与ASP.Net Identity Framework结合使用,而无需自定义代码

  • 我把它放到main
    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>
    
    
    
    <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>