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 используется для проверки того, User имеет ли свойство текущего HttpContext экземпляра значение null
.
User Если свойство имеет значение null
, то в примере свойству User текущего HttpContext экземпляра GenericPrincipal присваивается объект , где IdentityGenericPrincipal объект является GenericIdentity объектом со значением Name "default".
Примечание
Событие DefaultAuthentication_OnAuthenticate возникает перед событием AuthorizeRequest . В результате, если задать User для свойства текущего HttpContext экземпляра пользовательское удостоверение, это может повлиять на поведение приложения. Например, если вы используете FormsAuthentication класс и укажете <deny users="?" />
в разделе конфигурации авторизации , чтобы убедиться, что доступ к сайту имеют только пользователи, прошедшие проверку подлинности, этот пример приведет к тому, что элемент deny будет игнорироваться, так как у пользователя будет имя " по умолчанию". Вместо этого необходимо указать <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 приложения.
Вы можете использовать Context свойство DefaultAuthenticationEventArgs объекта в событии DefaultAuthentication_OnAuthenticate , чтобы задать свойству User текущего HttpContext экземпляра пользовательский IPrincipal объект. Если значение свойства User не указано, свойство экземпляра GenericPrincipalDefaultAuthenticationModuleHttpContext присваивает 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.