none
Разграничения прав доступа RRS feed

  • Вопрос

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

    При запуске приложения нужно проверить, какой пользователь в сети (если пользователь ранее пожелал, чтобы его запомнили). На данный момент переменная session["UserID"] заполняется лишь в момент авторизации

    Есть какое-нибудь событие, которое активируется при запуске приложения?

    И как обNULLить переменную session["UserID"] после нажатия ссылки "Выход" (пользователь выходит из системы, но приложение продолжает работать)?


    С уважением, J.Lion

    18 июня 2012 г. 10:05

Ответы

  • Для начала скажу, что веб-приложения, это не настольные и многие понятия тут трактуются совсем по-другому или не применимы.

    "При запуске приложения нужно проверить, какой пользователь в сети (если пользователь ранее пожелал, чтобы его запомнили)" - информация о пользователе хранится как на сервере, так и на клиете. Для долговременного хранения на севере используется БД. На клиенте куки(cookie). Но вся загвозда в том, что колиент в веб-приложении понятие непостоянное. Он может просто напросто поменять машину с которой он заходит на сайт. Или чистить куки, не сохранять их или работать через прокси. Поэтому понятие "какой пользователь в сети", в приложених работающих по стандарту REST не полностью применимо. Можно узнать примерное количество.

    "Есть какое-нибудь событие, которое активируется при запуске приложения?" - понятие запуск приложения тут тоже очень относительное. Под ним может подразумеваться как зоздание домена всего веб-приложения и загрузка сборки этого приложения, так и запрос пользователя, т.е. жизненный цикл обработки запроса. Всё приложение стартует единожды, и выгружается через определённое время после таго как их не будет. А каждый отдельный запрос обрабатываеся во тдельном потоке. Обработчик старта всего приложения нахожится в файле Global.asax.cs

    protected void Application_Start()
    {
    }

    "И как обNULLить переменную session["UserID"] после нажатия ссылки "Выход" (пользователь выходит из системы, но приложение продолжает работать)?" - не нужно её очишать, она сама очистится после таймаута. Для каждого пользователя создаётся своя сессия, и после выхода или истечения времени приложение само очищает её. Правда сессия тоже может зраниться в БД.

    • Помечено в качестве ответа J.Lion 18 июня 2012 г. 10:31
    18 июня 2012 г. 10:28
    Модератор

Все ответы

  • Для начала скажу, что веб-приложения, это не настольные и многие понятия тут трактуются совсем по-другому или не применимы.

    "При запуске приложения нужно проверить, какой пользователь в сети (если пользователь ранее пожелал, чтобы его запомнили)" - информация о пользователе хранится как на сервере, так и на клиете. Для долговременного хранения на севере используется БД. На клиенте куки(cookie). Но вся загвозда в том, что колиент в веб-приложении понятие непостоянное. Он может просто напросто поменять машину с которой он заходит на сайт. Или чистить куки, не сохранять их или работать через прокси. Поэтому понятие "какой пользователь в сети", в приложених работающих по стандарту REST не полностью применимо. Можно узнать примерное количество.

    "Есть какое-нибудь событие, которое активируется при запуске приложения?" - понятие запуск приложения тут тоже очень относительное. Под ним может подразумеваться как зоздание домена всего веб-приложения и загрузка сборки этого приложения, так и запрос пользователя, т.е. жизненный цикл обработки запроса. Всё приложение стартует единожды, и выгружается через определённое время после таго как их не будет. А каждый отдельный запрос обрабатываеся во тдельном потоке. Обработчик старта всего приложения нахожится в файле Global.asax.cs

    protected void Application_Start()
    {
    }

    "И как обNULLить переменную session["UserID"] после нажатия ссылки "Выход" (пользователь выходит из системы, но приложение продолжает работать)?" - не нужно её очишать, она сама очистится после таймаута. Для каждого пользователя создаётся своя сессия, и после выхода или истечения времени приложение само очищает её. Правда сессия тоже может зраниться в БД.

    • Помечено в качестве ответа J.Lion 18 июня 2012 г. 10:31
    18 июня 2012 г. 10:28
    Модератор
  • В новом проекте автоматически была создана полнофункциональная форма для авторизации. В ней имеется флажок "сохранять состояние входа". Наверное, используются Печеньки. Можно и ещё раз войти, но выглядит это странно: в верхнем углу написан текст приветствия для конкретного пользователя, а пользователь как-будто и не вошёл. Для разрешения этой проблемы я спросил про события. Но если всё так неоднозначно, надо что-то другое придумывать

    С уважением, J.Lion

    18 июня 2012 г. 10:37
  • Один из весомых минусов ASP.NET WebForms, для меня, это высокий уровень абстракций, хотя с другой точки зрения он может трактоваться как плюс. Абстракции сильно облегчают жизнь на начальных этапах разработки и когда мало опыта, но вместе с тем очень усложняют всё, когда начинаешь глубже копать. Поэтому, чтобы начать разрабатывать нужно изучить хотя бы базовые принцыпы работы платформы, а потом по мере разработки продвигаться и изучать дальше, иначе всё обернётся кошмаром. Вот Вам одна из лучших книг по этой тематике: "Microsoft ASP.NET 4 с примерами на C# 2010 для профессионалов". А если будут вопросы смело спрашивайте, форумы MSDN к ваши услугам.
    18 июня 2012 г. 10:54
    Модератор