Я создал приложение ASP.Net C # MVC с «Индивидуальной учетной записью пользователя» для аутентификации + localDB. Я запустил приложение в Visual Studio с IIS Express на localhost, зарегистрировал пользователя и вошел в систему с этим пользователем.

Я пытаюсь понять, как серверная часть знает, что пользователь вошел в систему в следующем сценарии:

  1. запустите приложение iis express & в визуальной студии
  2. авторизоваться
  3. остановите приложение iis express & в визуальной студии
  4. снова запустите приложение iis express & в визуальной студии
  5. пользователь все еще вошел в систему (ПОЧЕМУ ???)

Я проверил пользовательские таблицы в БД и не смог найти ни одного поля, указывающего на вошедшего в систему пользователя. Я думаю, остановка и перезапуск iis express должен также очистить все в фоновом режиме.

Так как же бэкэнд узнал, что пользователь вошел в систему на шаге 5 выше ??

Я нашел следующий файл cookie в запросе http

Cookie: _ga = GA1.1.1546797954.1551225891; __RequestVerificationToken = PSFeb9iP4aZr3wxxb8nJNKtki_1XPTzGO1Hzaf0W3iDsSCnV_qCfMsC9TY980X51c2rANZA - zureu6UHKEssAHza58AdmQUdZVL98VGYlRc1 ; .AspNet.ApplicationCookie = VUPznoprBRK2z13u03ArrC9HLHeGGUyTSvu9rYpSnZju_Rz4X2V5n9faw0EhnmuFjVN1AIva7HZSAhUBeSZ5jQHSej6XaAExy0hkwF_9vC190LfWBPP - oH3Zp0jj0ZmZ7L3sLlLqux4HV5CZSA - jqhDF4IXAFKyisFFV136PlxrJTmb9OXRrmo9rigCiIy0z_oixDlg1eHVI3T6ptVgn1Qhohtr1mTqoBJsF7gi7CHymSBlyFJ5MgYxfPcWNhJnj3H - WWK1ijkfzxsm0R13m2_6IbIiK1y5uzQBkklb8oMuz0mD27GlwMzteQBP3VLOXn77BreOPefJ8_2AekYjFGjgBIGGpngxLVzDneT4rC - BDiVKdWO_FRuail4ivVAN2ZJtdjK0uEPqnln5rmOlT0MLAhYzHMkk - HTvtW - XO- Kexinlh58uxz0E7bncY5I6troc19E0fBLMnfXThtaL7ur6CN4pqUyq4yALJCTHszG3RPLQoJja0u1g34i - mKunZ

c#
-1
Qiao Li 29 Май 2019 в 11:02

2 ответа

Лучший ответ

В веб-разработке есть очень базовая концепция, называемая cookie. Cookie отвечает также за хранение информации о пользователе в браузере. Когда вы входите в систему членства, в ответ добавляется специальный заголовок Set-Cookie, который затем сохраняется в кэше браузера. Информация, отправляемая через заголовок, содержит информацию о зарегистрированном пользователе. С последующими запросами браузер отправляет тот же файл cookie на сервер, и система членства анализирует эту информацию, чтобы идентифицировать пользователя, который делает запрос, и если информация действительна, вы вошли в систему, и система идентифицирует вас.

РЕДАКТИРОВАТЬ : Детали выполняемых операций не уникальны и зависят от того, какую библиотеку вы используете для аутентификации, но если вы используете систему аутентификации по умолчанию asp.net, вы можете посмотреть, как все делается в исходном коде. Для проверки ASP.NET CORE https://github.com/aspnet/AspNetIdentity и для ASP.NET MVC проверки: https://github.com/aspnet/Identity

0
Behnam Esmaili 29 Май 2019 в 08:33

Вот как работает аутентификация в ASP.NET MVC

  1. Введите имя пользователя и пароль в форму входа и нажмите кнопку «Войти»
  2. При нажатии кнопки «Вход» серверный код проверяет, существуют ли введенные имя пользователя и пароль в базе данных.
  3. Если введенные имя пользователя и пароль существуют в базе данных, то код на стороне сервера создает cookie и сохраняет их в браузере (не в базе данных)
  4. На каждом запросе страницы IIS проверяет, существует ли файл cookie аутентификации или нет.
  5. Если cookie существует, то пользователь вошел в систему, а если cookie не существует, пользователь не вошел

Поскольку аутентификационный cookie хранится в браузере, а не в IIS. Остановка и запуск IIS не влияет на состояние входа пользователя.

Чтобы ответить на ваш конкретный вопрос: как бэкэнд узнал, что пользователь вошел в систему на шаге 5 выше? Ответ: При каждом запросе страницы от IIS. Наряду с другой информацией, куки-файл аутентификации, хранящийся в браузере, отправляется на сервер / IIS. Затем back-end / IIS проверяет, является ли файл cookie аутентификации действительным. Если cookie-файл является действительным, сервер / IIS знает, что пользователь вошел в систему. Если cookie-файл является недействительным, сервер / IIS знает, что пользователь не вошел в систему.

Чтобы понять этот процесс дальше. Я бы рекомендовал сначала прочитать о файлах cookie, а затем прочитать об аутентификации в ASP.NET.

Надеюсь это поможет!

0
nccsbim071 29 Май 2019 в 08:46