Событие пожара после аутентификации пользователя - проверка подлинности 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

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