Это проект MVC 3. Просто для тестирования у меня есть
public class MyRoleProvider : RoleProvider
{
public override string[] GetRolesForUser(string username)
{
return new string[] { "0", "1", "2", "4" };
}
public override bool IsUserInRole(string username, string roleName)
{
bool result = true;
return result;
}
Прописываю в web.config. А затем, если я настрою стандартный SqlMemberShipProvider, что-то вроде следующего приведет к срабатыванию моего GetRolesForUser.
[Authorize(Roles="4")]
public class AdminController : Controller
{ //...
Однако я не хочу использовать стандартный SqlMemberShipProvider. Я определил собственный AuthorizeAttribute следующим образом, просто чтобы проверить:
public class MyAuthorize : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool result = true;
return result;
return base.AuthorizeCore(httpContext);
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
}
}
Теперь следующее не приведет к срабатыванию MyRoleProvider.GetRolesForUser.
[MyAuthorize(Roles="4")]
public class AdminController : Controller
{ //...
Вышеупомянутое вызовет MyAuthorize.AuthorizeCore и MyAuthorize.OnAuthorization, но не методы в MyRoleProvider. Какая связь между MemberShipProvider, RoleProvider и AuthorizedAttribute? Когда эти отношения определены или настроены?
Спасибо.