У меня есть приложение MVC 3, которое должно использоваться как для анонимных, так и для аутентифицированных пользователей.Как заставить приложение MVC заполнять значение User.Identity.Name при использовании проверки подлинности Windows
Это достигается путем настройки режима аутентификации IIS, чтобы активировать аутентификацию анонимного пользователя и Windows, а затем установить для параметра проверки подлинности режим web.config значение «Windows» и выборочно применять специальный атрибут авторизации к действиям, требующим проверки подлинности.
Проблема заключается в том, что в некоторых действиях мне не нужно применять атрибут (так что анонимные пользователи могут получить к нему доступ), но в случае, если пользователь-администратор просматривает его, я хочу получить его пользователя. Значение Identity.Name.
Приложение ведет себя непредсказуемо, в некоторых случаях, как только пользователь был аутентифицирован в предыдущем действии, тогда свойство User.Identity.Name остается доступным для остальной части сеанса пользователя. Однако в других случаях это выглядит как пустая строка.
Итак, как я могу на самом деле сказать приложению, чтобы «пойти и подтвердить подлинность этого пользователя»? Если атрибут Authorize может принудительно аутентифицировать пользователя, то как я могу достичь такого же эффекта по запросу в рамках действия?
спасибо вам помочь,
M
Спасибо Дарина. Тем не менее, я не хочу отклонять пользователя как не прошедший проверку, но я хочу, чтобы их имя было заполнено в User.Identity.Name, если они действительно аутентифицированы, если вы знаете, что я имею в виду. Что-то вроде, если username.startsWith («admin»), то User.Identity.Authenticate() ... Я просто не могу понять, что представляет собой настоящая команда или техника для этого. – FullOfQuestions
Другими словами, какая строка AuthorizeAttribute фактически выполняет аутентификацию пользователя? – FullOfQuestions
Это делается с помощью соответствующего обработчика проверки подлинности и происходит намного раньше в контексте выполнения, чем действие вашего контроллера. Это абсолютно ничего в авторизованном атрибуте. Например, если вы используете FormsAuthentication, это происходит в модуле FormsAuthentication намного раньше в конвейере выполнения. Этот модуль читает файл cookie проверки подлинности форм, расшифровывает его, извлекает имя пользователя и задает текущий главный. –