Событие пожара после аутентификации пользователя - проверка подлинности Windows
Есть ли событие, которое срабатывает после аутентификации пользователя (Windows)? Я выполняю в Application_Start(), но он возвращает false User.Identity.IsAuthenticated
,
Я хотел бы создать и добавить роли вручную для пользователя.
2 ответа
Я использовал это:
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is WindowsIdentity)
{
if (string.IsNullOrEmpty(Usuario.Nome))
{
Убедитесь, что в ваших свойствах проекта (alt + enter в проекте) нажмите на WEB проверку NTLM AUTHENTICATION.
Это сработало для меня. сейчас HttpContext.Current.User.Identity
больше не равно нулю
Application_Start() вызывается, когда запрашивается первый ресурс (например, страница) в приложении ASP.NET. Кроме того, он вызывается только один раз в течение жизненного цикла приложения. Как уже было сказано, вы не сможете авторизовать всех пользователей на этом этапе. Текущая информация о пользователях Windows на клиентском компьютере предоставляется веб-браузером посредством криптографического обмена, включающего хеширование с веб-сервером [Wiki]. Только тогда вы можете авторизовать пользователя. Итак, User.Identity.IsAuthenticated должен работать при загрузке страницы (см. Код ниже). Вы можете извлечь необходимую логику из общего метода и вызвать ее при первой загрузке страницы
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
Page.Title = "Home page for " + User.Identity.Name;
// add your logic here
}
else
{
// you get here if auth failed.
Page.Title = "Home page for guest user.";
}
}
Больше информации после вашего обновления:
Я бы использовал Application_Start() для проверки и добавления ролей, если они еще не существуют.
if (! Roles.RoleExists("Auditors"))
Roles.CreateRole("Auditors");
Вы можете найти этот пост полезным: http://weblogs.asp.net/scottgu/Recipe_3A00_-Implementing-Role_2D00_Based-Security-with-ASP.NET-2.0-using-Windows-Authentication-and-SQL-Server