Необходимость дважды войти в приложение asp.net из-за документа по умолчанию в IIS

Ранее я добавил login.aspx в раздел Документ по умолчанию в IIS.

Однако, когда кто-то обращался к приложению, требовалось войти дважды. Первый не сообщил бы ни сообщения об ошибке, ни перенаправления на следующую страницу в приложении. А второй фактически перенаправлял бы пользователя на ожидаемую страницу. И оба раза пользователь использовал правильные учетные данные.

Как только я удалил login.aspx из раздела Документ по умолчанию в IIS, и пользователь предоставил полную ссылку на приложение (~/login.aspx), Проблема исчезла, так как требовалось только один раз войти в систему.

Кто-нибудь знает, почему это происходит?


person aleafonso    schedule 26.07.2012    source источник


Ответы (3)


Чтобы решить эту проблему, в событии Page_Load Документа по умолчанию необходимо проверить следующее:

if (this.User.Identity.IsAuthenticated)
{
    Response.Redirect("somepage.aspx");
}

Источник: Аутентификация формы asp.net изменить .net 2 на .net4

person aleafonso    schedule 30.08.2012

У вас есть индексная страница, установленная по умолчанию и присутствующая?

Из вашей скудной информации я могу найти одно (из многих возможных) объяснение:

сначала вы попадаете на yoursite.com (без указания login.aspx), он перенаправляется на login.aspx за кулисами, но URL-адрес остается прежним. Когда вы отправляете из login.aspx, он, вероятно, переходит на какую-то другую (существующую) страницу, которая перенаправляет пользователя на login.aspx (на этот раз переписывая URL-адрес).

ЕСЛИ вы хотите лучшего объяснения, вам нужно будет предоставить более подробную информацию

person Germann Arlington    schedule 26.07.2012
comment
Спасибо за ответ. К сожалению, нет другой страницы, на которую он перенаправляется «за кулисами». Я был бы рад предложить более подробную информацию, которая может оказаться актуальной для моего вопроса. Пожалуйста, дай мне знать - person aleafonso; 26.07.2012
comment
В вашем файле login.aspx есть форма, эта форма публикуется на какой-либо странице, страница, которая обрабатывает ввод формы (проверяет имя пользователя и пароль) [formProcessor.aspx], перенаправляет на обычные страницы обработки [validUser.aspx], если имя пользователя и пароль действительны или вернуться к login.aspx, если они недействительны. Здесь я описываю нормальное стандартное поведение, давая примеры имен страниц для справки в квадратных скобках, потому что вы сами не даете мне подробностей. Когда форма входа отправляется в [formProcessor.aspx], эта страница обработки может проверить реферер, чтобы убедиться, что запрос исходит от login.aspx. - person Germann Arlington; 26.07.2012
comment
Чтобы сделать вашу жизнь проще, добавьте перенаправление на стороне клиента. - person Germann Arlington; 26.07.2012
comment
Эта ситуация не связана с учетными данными пользователя, как было указано в вопросе. Страница перенаправляется при второй попытке входа вместо первой. Спасибо за вашу помощь в любом случае - person aleafonso; 26.07.2012
comment
Я НЕ говорю, что это имеет какое-либо отношение к учетным данным пользователя. Пожалуйста, перечитайте мои комментарии. Я говорю, что это ВСЕ связано с тем, как они обрабатываются вашими страницами. Поскольку они обрабатываются ВАШИМИ страницами, а вы НЕ ПРЕДОСТАВЛЯЕТЕ достаточно подробностей, я пресекаю любые дальнейшие попытки помочь вам. - person Germann Arlington; 26.07.2012

В Global.asax добавьте эти строки

void Application_BeginRequest(object sender, EventArgs e)
{
    if (Request.QueryString.ToString().EndsWith("ReturnUrl=%2f"))
              System.Web.HttpContext.Current.Response.Redirect("~/login.aspx");

    if (Request.AppRelativeCurrentExecutionFilePath == "~/")
        HttpContext.Current.RewritePath("login.aspx");//This is the default page to navigate after a successful login.

}
person Kemboi    schedule 13.04.2017