2015-12-27 8 views
0

У меня есть веб-приложение, которое аутентифицирует пользователей с AD в соответствии с статьей this. Игнорирование, если выключено, потому что код запускает некоторые файлы, которым необходимы разрешения service_user. Однако, это часть моего кода. Мне нужно имя пользователя, прошедшего проверку подлинности, в целях безопасности (проверьте, входит ли он в определенную группу AD) или просто отправил ему электронные письма.Получение текущего зарегистрированного пользователя в веб-приложении asp.net

Я попытался:

  1. HttpContext.User недвижимости.
  2. WindowsIdentity.GetCurrent Method.

Кажется, что они возвращают пользователя пула приложений, а не вошедшего в систему пользователя.

Есть ли способ, которым я могу получить имя пользователя, которое входит в систему для текущей сессии?

Лучший, Шимон.

+0

Зависит от того, какой тип вы используете. Попробуйте User.Identity.Name – miechooy

+0

Привет, miechooy, я уже пробовал, он возвращает пользователя, в котором работает пул приложений. – Shim52

+0

Исправлено с использованием: HttpContext.Current.User.Identity.Name Спасибо! – Shim52

ответ

0

Создание класса для сеанса приложения.

public class AppSession 
{ 
public static string UserName 
    { 
     set 
     { 
      HttpContext.Current.Session["UserName"] = value; 
     } 
     get 
     { 
      if (HttpContext.Current.Session["UserName"] != null) 
      { 
       return HttpContext.Current.Session["UserName"].ToString(); 
      } 
      else 
       return null; 
     } 
    } 
} 

на странице Login.aspx

protected void btnSignIn_Click(object sender, EventArgs e) 
    { 
     string userName = txtUserName.Text.Trim(); 
     string password = txtPassword.Text.Trim(); 

     if (Membership.ValidateUser(userName, password)) 
     { 
      Profile userInfo = dc.Profile.Where(s => s.UserName == userName).SingleOrDefault(); 
      AppSession.UserName = userInfo.UserName; 
     } 
    } 

Теперь вы можете получить UserName доступа текущего пользователя.

Смежные вопросы