Это проект 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?Когда эти отношения определены или настроены?
Спасибо.