Класс атрибута Authorize по умолчанию принимает в качестве аргумента httpcontext.когда звонили.Затем он проверяет значение HttpContext.User.Identity.IsAuthenticated bool и действует соответственно.Это работает, только если вы используете проверку подлинности с помощью форм.Если вы используете собственную логику входа в систему (например, в объекте сеанса), вы можете получить класс из атрибута Authorize и вызвать его.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
clsSession sess = httpContext.Session["Current"] as clsSession;
if (sess.IsLogin) return true;
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new ViewResult { ViewName = "Unauthorized" };
}
}
Затем вы можете использовать этот класс следующим образом:
[MyAuthorize]
public ActionResult Index()
{
return View();
}
Это будет работать.Вы можете использовать [MyAuthorize] вместо [Authorize] во всех действиях контроллера.Если он возвращает false, он вернет представление (в данном случае «Unauthorized»).Имя представления может быть любым и может быть расположено в папке views / shared.