在我的MVC 4 Web API项目中,我有一个自定义角色提供程序,通过
对于任何带有
角色提供程序:
System.Web.Mvc.Authorize
属性在我的Home System.Web.Mvc.Controller
上正常工作。对于任何带有
System.Web.Http.Authorize
的System.Web.Http.ApiController
,自定义角色提供程序从未被调用,始终返回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>
[System.Web.Http.Authorize(Roles = "Master")]
会立即评估为false。 - chrisjsherm