URL входа по умолчанию на HttpUnauthorizedResult в asp.net mvc - PullRequest
8 голосов
/ 16 мая 2011

Я написал пользовательский AuthorizeAttribute, который имеет следующее условие в приложении asp.net mvc3:

public override void OnAuthorization(AuthorizationContext filterContext)
{     
    //auth failed, redirect to Sign In
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
    {
       filterContext.Result = new HttpUnauthorizedResult();
    }
}

И в моем web.config у меня есть:

<authentication mode="Forms">
  <forms loginUrl="~/User/SignIn" timeout="2880" />
</authentication>

При сбое аутентификации по умолчанию он перенаправляет на страницу "/ Account / Login".

Как изменить URL-адрес перенаправления по умолчанию и перенаправить его на "/ User / SignIn"?

Снимок экрана показывает четкое представление о том, что я пытаюсь сказать .. HttpUnauthorizedresult image

Хотя я установил '/ User / SignIn', он перенаправляет на '/ Account / Login'

Ответы [ 3 ]

9 голосов
/ 17 июня 2011

Я не уверен, могу ли я добавить это как ответ.Но это может помочь другим, у которых была эта связанная проблема.

Я получил решение после борьбы.Недавно я добавил ссылку на WebMatrix.WebData, которая, по-видимому, является реальной причиной этой проблемы.Это можно сделать, добавив ключ в файл конфигурации:

<add key="loginUrl" value="~/User/SignIn" />
2 голосов
/ 17 мая 2011

Вы должны изменить корневой каталог для loginUrl.

Я создал AuthorizationAttribute ... он перенаправляется правильно, например

<authentication mode="Forms">
    <forms loginUrl="~/Authenticate/SignIn" timeout="2880"/>
</authentication>

, и мой атрибут:

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

        if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
        {
            filterContext.Result = new HttpUnauthorizedResult();
        }
    }
}

и при необходимости примените атрибут к любому методу вашего контроллера ...

[AuthorizationAttribute()]
public ActionResult Index()
{
    return View();
}
1 голос
/ 30 мая 2013

У меня недавно была эта проблема, и я обнаружил, что это связано с тем, что в моем проекте была ссылка на файл WebMatrix.dll.

Удаление этой DLL решило проблему

см. Здесь Что такое ключ / значение PreserveLoginUrl appSetting в приложении ASP.NET MVC?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...