2017-02-02 2 views
0

Я использую AuthorzieAttribute для аутентификации и авторизации в своем веб-приложении. Как изменить метод HandleUnauthorizedRequest, совместимый с принципом инверсии управления (IOC)?Как изменить код, совместимый с принципом инверсии управления?

public class AuthorizeUser : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     return SessionContext.GetCurrentUser() != null ? true : false; 
    } 
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     filterContext.Result = new RedirectToRouteResult(
        new RouteValueDictionary(
         new 
         { 
          returnUrl = filterContext.HttpContext.Request.Url, 
          Area = "", 
          controller = "Account", 
          action = "Login" 
         }) 
        ); 
    } 
} 
+0

Для начала, опираясь на абстракций вместо реализации большая часть IoC. Затем вы можете использовать конфигурацию, чтобы определить, какие конкретные классы реализуют ваши абстракции. Посмотрите здесь дополнительную информацию: http://stackoverflow.com/questions/770039/examples-of-ioc-containers – awh112

+0

[это] (https://www.cuttingedge.it/blogs/steven/pivot/entry .php? id = 98) может помочь – qujck

+0

Вы можете использовать *** Property Injection *** в фильтре. Где вы застряли точно? – Win

ответ

0

Ответ:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
{ 
    filterContext.HttpContext.Response.RedirectToRoute(new { controller = "Account", action = "Login", returnUrl = filterContext.HttpContext.Request.Url }); 
}