DefaultAuthenticationModule.Authenticate Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит после проверки подлинности запроса.
public:
event System::Web::Security::DefaultAuthenticationEventHandler ^ Authenticate;
public event System.Web.Security.DefaultAuthenticationEventHandler Authenticate;
member this.Authenticate : System.Web.Security.DefaultAuthenticationEventHandler
Public Custom Event Authenticate As DefaultAuthenticationEventHandler
Тип события
Примеры
В следующем примере кода используется событие DefaultAuthentication_OnAuthenticate для проверки того, является nullли User свойство текущего HttpContext экземпляра.
User Если свойство равноnull, то пример задает User свойство текущего GenericPrincipalHttpContext экземпляра GenericPrincipal объекту, Name где Identity объект является GenericIdentity значением по умолчанию.
Замечание
Событие DefaultAuthentication_OnAuthenticate вызывается перед событием AuthorizeRequest . В результате, если задать User свойство текущего HttpContext экземпляра пользовательскому удостоверению, это может повлиять на поведение приложения. Например, если вы используете FormsAuthentication класс и указываете <deny users="?" /> в разделе конфигурации авторизации , чтобы убедиться, что у пользователей, прошедших проверку подлинности, есть доступ к сайту, этот пример приведет к тому, что элемент запрета будет игнорироваться, так как у пользователя будет имя, которое имеет значение по умолчанию. Вместо этого необходимо указать <deny users="default" /> , чтобы только прошедшие проверку подлинности пользователи могли получить доступ к сайту.
public void DefaultAuthentication_OnAuthenticate(object sender,
DefaultAuthenticationEventArgs args)
{
if (args.Context.User == null)
args.Context.User =
new System.Security.Principal.GenericPrincipal(
new System.Security.Principal.GenericIdentity("default"),
new String[0]);
}
Public Sub DefaultAuthentication_OnAuthenticate(sender As Object, _
args As DefaultAuthenticationEventArgs)
If args.Context.User Is Nothing Then
args.Context.User = _
new System.Security.Principal.GenericPrincipal( _
new System.Security.Principal.GenericIdentity("default"), _
new String(0) {})
End If
End Sub
Комментарии
Событие Authenticate возникает после AuthenticateRequest события. Он используется для обеспечения User заполнения свойства текущего HttpContext экземпляра IPrincipal объектом.
Вы можете получить доступ к Authenticate событию DefaultAuthenticationModule класса, указав подзадав имя DefaultAuthentication_OnAuthenticate в файле Global.asax приложения.
Свойство объекта можно использовать ContextDefaultAuthenticationEventArgs в событии DefaultAuthentication_OnAuthenticate для задания User свойства текущего HttpContext экземпляра пользовательскому IPrincipal объекту. Если значение свойства User не задано, DefaultAuthenticationModule свойство экземпляра HttpContextGenericPrincipal задает User объекту, который не содержит сведений о пользователе.
Событие DefaultAuthentication_OnAuthenticate возникает после AuthenticateRequest события и перед событием AuthorizeRequest . Если у вас есть authorization раздел, который зависит от имени пользователя, чтобы запретить или разрешить доступ к приложению, изменение User свойства текущего HttpContext экземпляра может повлиять на поведение приложения. Убедитесь, что имя пользователя, заданное во время события DefaultAuthentication_OnAuthenticate , учитывается при указании раздела авторизации в конфигурации.
Замечание
Если веб-приложение работает в IIS 7.0 в интегрированном режиме, Authenticate событие DefaultAuthenticationModule не вызывается.
mode Если атрибут элемента конфигурации проверки подлинности имеет значение None, а приложение подписывается на Authenticate событие, PlatformNotSupportedException возникает ошибка. В этом сценарии для получения уведомлений проверки подлинности подпишитесь на AuthenticateRequest событие экземпляра HttpApplication . Дополнительные сведения о проблемах совместимости в интегрированном режиме см. в разделе "Перемещение приложения ASP.NET из IIS 6.0 в IIS 7.0".