Asp.net 使用自定义(我自己的)RoleProvider的Windows身份验证在IIS上不起作用
我尝试实现自己的角色Provider:Asp.net 使用自定义(我自己的)RoleProvider的Windows身份验证在IIS上不起作用,asp.net,iis,asp.net-membership,roleprovider,Asp.net,Iis,Asp.net Membership,Roleprovider,我尝试实现自己的角色Provider: public class MyRoleManger : RoleProvider { public override bool IsUserInRole(string username, string roleName) { throw new NotImplementedException(); } public override string[] GetRolesForUser(string usern
public class MyRoleManger : RoleProvider
{
public override bool IsUserInRole(string username, string roleName)
{
throw new NotImplementedException();
}
public override string[] GetRolesForUser(string username)
{
throw new NotImplementedException();
}
private string appName = "";
public override string ApplicationName
{
get { return appName; }
set { appName = value; }
}
....
}
这是我的Web.config:
<system.web>
.....
<roleManager defaultProvider="RoleManger" enabled="true" >
<providers>
<clear/>
<add name="RoleManger" type="UserManager.Client.Web.MyRoleManger" applicationName="MyApp"/>
</providers>
</roleManager>
<authentication mode="Windows"/>
<identity impersonate="true"/>
</system.web>
<system.webServer >
<security>
<authorization >
<clear/>
<add accessType="Allow" roles="anyRole"/>
<add accessType="Deny" users="?"/>
</authorization>
</security>
...
</system.webServer >
但是IIS下的ASP.NET不调用MyRoleManager方法。而是尝试从Windows安全组AD获取任何角色。如何强制IIS将MyRoleManager与Windows身份验证一起使用?您的角色提供程序实现应具有name属性。确保它设置正确,因为它与您的配置有关。Name属性是什么意思?MyRoleManager.Name属性?或者MyRoleManager.ApplicationName属性?RoleProvider的默认实现没有此属性。这可能很明显,但您如何获得角色?你是在使用Roles类还是user.IsInRole?我是说应用程序名。“Name”属性位于ProviderBase上有类似的问题,但该问题在AuthenticateRequest事件中手动解决。我能否仅使用web.config和MyRoleManager来避免此代码?您的角色提供程序实现应该具有name属性。确保它设置正确,因为它与您的配置有关。Name属性是什么意思?MyRoleManager.Name属性?或者MyRoleManager.ApplicationName属性?RoleProvider的默认实现没有此属性。这可能很明显,但您如何获得角色?你是在使用Roles类还是user.IsInRole?我是说应用程序名。“Name”属性位于ProviderBase上有类似的问题,但该问题在AuthenticateRequest事件中手动解决。我能否仅使用web.config和MyRoleManager避免此代码?