none
asp.net авторизация, returnUrl на саму себя RRS feed

  • Вопрос

  • Добрый день.

    Включена у нас в приложении автризация "Forms", страница авторизации - index.html лежит в корне веб-приложения.
    Когда на неё заходим в url пишется "index.html?ReturnUrl=%2fDev1%2f"   - где Dev1 имя моего виртуального каталога. Как можно убрать это? Ведь я сразу захожу на страницу авторизации, зачем нужен лишний редирект.

    18 марта 2013 г. 2:42

Ответы

  • Страницы типа Index и Default стандартно делаются дефолтовыми и открытыми, поэтому лучше страницу авторизации делать другой.  Но если вам всё же нужен такой функционал (что не рекомендую), то придётся стандартный механизм немножечко изменить. Вместо вызова метода FormsAuthentication.RedirectFromLoginPage делать редирект самому храня Url запрашиваемой страницы в другом месте (хотя опять таки лучшим выбором остаётся строка запроса).

    "Ведь я сразу захожу на страницу авторизации, зачем нужен лишний редирект." - по любому он нужен, так как вы не всегда будете запрашивать дефолтовую страницу.

    18 марта 2013 г. 6:10
    Модератор

Все ответы

  • Страницы типа Index и Default стандартно делаются дефолтовыми и открытыми, поэтому лучше страницу авторизации делать другой.  Но если вам всё же нужен такой функционал (что не рекомендую), то придётся стандартный механизм немножечко изменить. Вместо вызова метода FormsAuthentication.RedirectFromLoginPage делать редирект самому храня Url запрашиваемой страницы в другом месте (хотя опять таки лучшим выбором остаётся строка запроса).

    "Ведь я сразу захожу на страницу авторизации, зачем нужен лишний редирект." - по любому он нужен, так как вы не всегда будете запрашивать дефолтовую страницу.

    18 марта 2013 г. 6:10
    Модератор
  • У меня никакого кода не выполняется чтобы менять механизм, всё делается через ст. настройки авторизации в web.config. Я просто захожу на страницу авторизации у меня сразу в url появляются какие-то непонятные параметры, зачем они пользователю? Редирект на саму себя не нужен, это просто бага asp.net, мне бы обойти её как-то.
    18 марта 2013 г. 6:34
  • "У меня никакого кода не выполняется чтобы менять механизм, всё делается через ст. настройки авторизации в web.config." - я и говорю, что стандартная реализация использует метод FormsAuthentication.RedirectFromLoginPage, который и делает перенаправление.

    "Я просто захожу на страницу авторизации у меня сразу в url появляются какие-то непонятные параметры, зачем они пользователю?" - без этих данных система не будет знать куда перенаправить пользователя после аутентификации. Поэтому эту информацию надо где-то хранить, если не в адресной строке, то в другом месте.

    "Редирект на саму себя не нужен, это просто бага asp.net, мне бы обойти её как-то." - это не бага, редирект нужен чтобы повторно запустить код страницы уже с данными аутентификации.

    18 марта 2013 г. 9:20
    Модератор
  • Куда перенаправить пишеться в web.config - defaultUrl. Сейчас в url пишется returnUrl на саму себя, хотя при успешной авторизации перенаправляет именно на defaultUrl, ну явно ведь косяк.

    18 марта 2013 г. 9:36
  • Вся загвоздка в том, что у всего в Web есть Uri, и каждый ресурс даётся через него и приложение не знает "сам на себя или ещё куда", оно следует чётким адресам. Обходные пути я уже показал высше.
    20 марта 2013 г. 5:57
    Модератор