Ste*_*eve 3 asp.net-mvc authorization wif
我使用自定义ClaimsAuthorizationManager在MVC中进行授权,但我遇到了一个问题.
异常信息:异常类型:NotSupportedException异常消息:ID1075:如果没有当前主体(HttpContext.Current.User)作为ClaimsPrincipal,则不能使用ClaimsAuthorizationModule.在System.IdentityModel.Services.ClaimsAuthorizationModule.Authorize()
我没有在应用程序的早期更改有关Current Principal的任何内容......想法?我很难过,并且正在寻找那个没有发现任何错误的错误......
<system.webServer>
<modules>
...
<add name="ClaimsAuthorizationModule" type="System.IdentityModel.Services.ClaimsAuthorizationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</modules>
</system.webServer>
<system.identityModel>
<identityConfiguration>
<claimsAuthorizationManager type="NamespaceFun.CustomAuthorizationManager, NamespaceFun" >
<policy resource="http://localhost:52606/" action="GET">
</policy>
</claimsAuthorizationManager>
...
</identityConfiguration>
</system.identityModel>
public class CustomAuthorizationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我只是遇到了同样的问题,所以我将我的web.config与WIF书中的一个进行了比较,结果发现我preCondition="managedHandler"在add元素的末尾缺少了,看起来你也错过了它.
它似乎也从MSDN示例中丢失了.
正确的方式:
<add name="ClaimsAuthorizationModule"
type="System.IdentityModel.Services.ClaimsAuthorizationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
preCondition="managedHandler" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4038 次 |
| 最近记录: |