在我的MVC 4 Web API项目中,我有一个自定义角色提供程序,它按照设计的System.Web.Mvc.Authorize
属性在我的主页System.Web.Mvc.Controller
上运行。System.Web.Http.AuthorizeAttribute无法识别自定义角色提供者
在任何System.Web.Http.ApiController
与System.Web.Http.Authorize
自定义角色提供程序永远不会被调用,总是返回false。有没有一种方法可以指定Web API AuthorizeAttribute选择我的自定义角色提供程序,如MVC AuthorizeAttribute?
角色提供:
public class CustomRoleProvider : RoleProvider
{
//Overriden methods
public override string[] GetRolesForUser(string username)
{
//Always return "Master" for testing purposes
return new string[] { "Master" };
}
public override bool IsUserInRole(string username, string roleName)
{
//Always return true for testing purposes
return true;
}
//Other overridden method stubs...
}
Web.config文件:
<roleManager defaultProvider="CustomRoleProvider" enabled="true" cacheRolesInCookie="false" >
<providers>
<clear />
<add name="CustomRoleProvider" type="MyApp.SecurityExtensions.CustomRoleProvider, MyApp" />
</providers>
</roleManager>
它只从MVC控制器中触发它。使用'[System.Web.Http.Authorize(Roles =“Master”)]'立即从API控制器评估为false – chrisjsherm 2013-02-18 21:48:16
我将关闭缓存以进行测试... – leastprivilege 2013-02-19 07:25:34
Cookie正在过期每会话,所以我刚才一直在关闭浏览器,但是如果我在调试时忘记关闭浏览器,这点很重要。我更新了操作系统,以反映关闭缓存 – chrisjsherm 2013-02-19 18:11:11