ASP .Net MVC 4 авторизовать и разрешить анонимный доступ

Я полностью новичок в этой среде, и я все еще изучаю основы ее и C#. Тем временем я натолкнулся на атрибуты Authorize и AllowAnonymous при чтении книги, и я не могу понять, как контроллер "знает", аутентифицирован ли пользователь, пытающийся получить доступ к этим методам / действиям, или нет. Где хранится эта информация? Нужно ли проходить специальную обработку при входе в систему?

Спасибо за любую помощь.

1 ответ

Решение

Предполагая, что у вас есть какая-то настройка аутентификации в вашем приложении (проверка подлинности с помощью форм, проверка подлинности Windows или OAuth), вошедший в систему пользователь хранит токен в своем браузере в виде файла cookie. Когда пользователь перемещается по вашему приложению, его токен передается вместе с ним. Когда атрибут Authorize применяется к одному из ваших методов контроллера, ваше приложение проверяет их токен и, если они являются аутентифицированным пользователем с правильными разрешениями, оно разрешает их, если нет, оно перенаправляет их на указанное вами действие. По умолчанию перенаправление на страницу регистрации / входа. AllowAnonymous позволяет пользователям, которые не прошли проверку подлинности, получить доступ к действию или контроллеру.

Короче говоря, он знает, основываясь на токене, который он получает от клиента.

Что касается второго вопроса, если вы выбрали "интернет-приложение" при создании проекта MVC 4, для вас встроена проверка подлинности с помощью форм, и вам не нужно ничего делать, кроме как использовать сгенерированное действие входа в систему. Если вы хотите использовать базу данных, отличную от той, которую создает сгенерированный код, вам потребуется реализовать MembershipProvider и MembershipUser.

Другие вопросы по тегам