我想在身份验证期间向Principal添加一些额外的声明.我正在尝试在使用Windows身份验证的 MVC 4.5项目中实现自定义ClaimsAuthenticationManager :
namespace Project.Infrastructure
{
public class ClaimsTransformer : ClaimsAuthenticationManager
{
public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
{
if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true)
{
((ClaimsIdentity)incomingPrincipal.Identity).AddClaim(new Claim(ClaimTypes.Role, "Admin"));
}
return incomingPrincipal;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将web.config设置为使用我的自定义类:
<configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</configSections>
Run Code Online (Sandbox Code Playgroud)
和
<system.identityModel>
<identityConfiguration>
<claimsAuthenticationManager type="Project.Infrastructure.ClaimsTransformer, [AssemblyName]" />
</identityConfiguration>
</system.identityModel>
Run Code Online (Sandbox Code Playgroud)
但是Authenticate方法永远不会被调用.我错过了什么吗?