C# Thinktecture资源授权,未设置授权管理器
我正在尝试使用github的Thinktecture示例构建一个示例web应用程序 现在,我在控制器中有一个操作,它用authorize属性修饰:C# Thinktecture资源授权,未设置授权管理器,c#,thinktecture,C#,Thinktecture,我正在尝试使用github的Thinktecture示例构建一个示例web应用程序 现在,我在控制器中有一个操作,它用authorize属性修饰: [ResourceAuthorize("Edit", "Resource")] public ActionResult Edit() { return View(); } 我实施了自己的授权管理器: public class AuthorizationManager : ResourceAuthoriza
[ResourceAuthorize("Edit", "Resource")]
public ActionResult Edit()
{
return View();
}
我实施了自己的授权管理器:
public class AuthorizationManager : ResourceAuthorizationManager
{
public override Task<bool> CheckAccessAsync(ResourceAuthorizationContext context)
{
var resource = context.Resource.First().Value;
if (resource == "Resources")
{
return CheckResourcesAccessAsync(context);
}
else
{
return Nok();
}
}
我想也许我必须在web.config中注册经理,如下所示:
<system.identityModel>
<identityConfiguration>
<claimsAuthenticationManager type="Namespace.xy.AuthorizationManager, Namespace.xy" />
</identityConfiguration>
</system.identityModel>
它不起作用。我做错了什么?解决方案是在启动中注册authorizationmanager:
app.UseResourceAuthorization(new MyAuthorizationManager());
此外,在使用app.UseWebApi(config)注册Web Api之前,必须先注册它。否则你会得到同样的错误,正如这里所说的:马哈茂德·阿里的这一评论非常重要,解决了我的问题。
app.UseResourceAuthorization(new MyAuthorizationManager());