2015-02-11 3 views
0

Я создал проект MVC 5 и использовал проверку подлинности Windows. Моя проблема - всякий раз, когда действие действия отклоняется атрибутом action [Authorize (Roles = «Roelabc»)], браузер выведет предупреждение для входа с именем пользователя/passwor. Теперь я не хочу, чтобы это всплывало, я просто хочу, чтобы пользователь отказался, а затем перенаправил пользователя на настроенную страницу. Большое спасибо.MVC 5 Перенаправление аутентификации Windows

ответ

0

Создать класс, производный от AuthorizeAttribute, решит мою проблему.

public class WindowsAuthorize : AuthorizeAttribute 
    { 
     public override void OnAuthorization(AuthorizationContext filterContext) 
     { 
      base.OnAuthorization(filterContext); 

      if (filterContext.Result is HttpUnauthorizedResult) 
      { 
       filterContext.Result = new RedirectToRouteResult(
        new RouteValueDictionary 
       { 
        { "client", filterContext.RouteData.Values[ "client" ] }, 
        { "controller", "Home" }, 
        { "action", "Contact" }, 
        { "ReturnUrl", filterContext.HttpContext.Request.RawUrl } 
       }); 
      } 
     } 
    } 

И использовать его как этот

[WindowsAuthorize(Roles = "User1")] 
[HttpGet] 
public ActionResult Index(string runDate = "") 
{ ... } 
0

Вы можете создать представление, которое называется неаризованным. И в своем классе входа просто переадресовывайтесь на это представление. Вы можете использовать что-то подобное в logon.cs

if (AuthenticateUser()) 
     { 
      if (CheckRulesOfBehavior()) 
      { 
       AuthorizeUser(); 
       HttpContext.Response.Redirect("~/Work/Index"); 
      } 
    else 
     { 
      HttpContext.Response.Redirect("~/Errors/Unauthorized"); 
     } 
+0

Привет, нет функции Логин аутентификации окна. Спасибо всем тем же. Я нашел решение, переопределив атрибут авторизации по умолчанию. См. Ниже сообщение. – shaun2099

Смежные вопросы