none
authentication RRS feed

  • Вопрос

  • Здравствуйте!

    У меня работает стандартная система аутентификации (в Web.config)

      <authentication mode="Forms">
          <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
      </authentication>
    т.е. отсылается к файлу Login.aspx, а там форма запроса логина и пароля. Если они верны, то загружается следующая форма frm_MainMenu.aspx, где уже есть дальнейший выбор. Но если я сразу загружаю (в адресной строке браузера) файл frm_MainMenu.aspx, то никакой аутентификации система не требует, и любой может ходить по системе (а мне этого не надо!). Что  мне написать в файле Web.config, чтобы избежать этого, т.е. при загрузке любого файла система отсылала бы к файлу Login.aspx?

    Спасибо!

    Александр Каган

    9 февраля 2014 г. 20:03

Ответы

  • "Почему же не работало, пока я не перезагрузил компьютер, а вместе с ним и IIS?" - скорее всего пул приложения не был перезагружен (процесс W3WP.EXE). Вы перезапустили его, загрузилась новая конфигурация. Сессия к этому не имеет отношения.

    Сделаем содержимое сообщества лучше, вместе!

    10 февраля 2014 г. 9:49
    Модератор

Все ответы

  • Примерно так:

    <authorization>
      <deny users="?" />
    </authorization>


    Сделаем содержимое сообщества лучше, вместе!

    9 февраля 2014 г. 20:29
    Модератор
  • Спасибо, у меня это есть в Web.config. Это первое, что я сделал, и это не помогло, как мне казалось. Но, перезагрузив компьютер, мне не удалось загрузить файл frm_MainMenu.aspx - система меня отослала к окну аутентификации, что и требовалось. Почему же не работало, пока я не перезагрузил компьютер, а вместе с ним и IIS? Видимо, сессия еще не кончилась (до перезагрузки), и я мог войти без аутентификации. Поэтому другой вопрос - как принудительно закончить сессию, когда я выхожу из приложения?
    • Предложено в качестве ответа Ihar Maiseyeu 10 февраля 2014 г. 9:50
    • Отменено предложение в качестве ответа Ihar Maiseyeu 10 февраля 2014 г. 9:50
    10 февраля 2014 г. 9:36
  • "Почему же не работало, пока я не перезагрузил компьютер, а вместе с ним и IIS?" - скорее всего пул приложения не был перезагружен (процесс W3WP.EXE). Вы перезапустили его, загрузилась новая конфигурация. Сессия к этому не имеет отношения.

    Сделаем содержимое сообщества лучше, вместе!

    10 февраля 2014 г. 9:49
    Модератор
  • Но ведь пул приложения выгружается, когда я его (окно) закрываю ? И при его новом запуске загружается Web.config - я так делал несколько раз, но система аутентификации не работала
    10 февраля 2014 г. 12:49
  • А что вы используете IIS Express или IIS?

    Сделаем содержимое сообщества лучше, вместе!

    10 февраля 2014 г. 12:52
    Модератор
  • В данном случае я использую встроенный (Visual Studiu 2010) IIS Web Server
    10 февраля 2014 г. 12:58
  • Если вы о web development server, то он перезапускается при каждом запуске, следовательно читается новая конфигурация. Возможно в вашем случае не истек срок действия куки. Для принудителного завершения сессии используйте Session.Abandon(). Для удаления куки аутентификации используйте FormsAuthentication.SignOut().

    Сделаем содержимое сообщества лучше, вместе!

    10 февраля 2014 г. 13:15
    Модератор
  • Это не web development server, это встроенный IIS, вряд ли он полноценный, скорее всего это IIS Express. Событие Session.Abandon() уже стоит в файле Global.asax по умолчанию, так что у меня оно присутствует. А вот куда (процедура, файл) поместить событие FormsAuthentication.SignOut()?
    10 февраля 2014 г. 14:39
  • Не знаю где оно у вас, но для принудительной очистки сессии его надо явно вызывать в коде.

    "А вот куда (процедура, файл) поместить событие FormsAuthentication.SignOut()?" -  в серверном коде, например делаете ссылку (Выход), при клике на неё и вызывается метод.


    Сделаем содержимое сообщества лучше, вместе!

    11 февраля 2014 г. 17:35
    Модератор
  • Спасибо!
    12 февраля 2014 г. 6:10
  • Пользователь норовит выйти не через кнопку "Выход", а просто закрыв окно или вкладку браузера. Как-то можно с этим бороться (потребовав аутентификации при следующем входе?
    12 февраля 2014 г. 8:18
  • Посмотрите данный топик до конца.

    Сделаем содержимое сообщества лучше, вместе!

    12 февраля 2014 г. 9:02
    Модератор
  • Question
    Спасибо! А в какой процедуре этот код (его VB.net вариант)
    CheckBox isKeepMeLoggedIn = (CheckBox)LoginUser.FindControl("RememberMe");
    FormsAuthentication.SetAuthCookie(username, isKeepMeLoggedIn.Checked);
    в Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) ?

    12 февраля 2014 г. 10:41
  • Да это не совсем ответ, вы посмотрите весь топик в целом.

    Сделаем содержимое сообщества лучше, вместе!

    12 февраля 2014 г. 17:55
    Модератор