2016-11-01 5 views
0

Context.User.Identity.Name всегда пусто, в настоящее время я использую WebForms:Почему Context.User.Identity.Name всегда пуст?

HttpCookie cookie = new HttpCookie("jamal"); 
cookie.Value = "bilal"; 
HttpContext.Current.Response.Cookies.Add(cookie); 

Здесь я хочу имя пользователя:

public override Task OnConnected() 
{ 
    AddUser(Context.User.Identity.Name, this.Context.ConnectionId); 
} 

private static void AddUser(String username, String connectionId) 
{ 
    ISet<String> connections; 

    if (users.TryGetValue(username, out connections) == false) 
    { 
     connections = users[username] = new HashSet<String>(); 
    } 

    connections.Add(connectionId); 
} 
+0

Где вы называете 'Context.User.Identity.Name'? Кроме того, пользователь аутентифицирован? –

ответ

0

Попытка назвать это на Page_Load случае, вы, вероятно, назвав его слишком рано.

1

Это происходит потому, что для этого действия не требуется аутентификация.
Требовать, чтобы пользователь был уполномочен на действие, украсив его Authorize attributeclass - который инициирует согласование аутентификации. Я никогда не пытался с веб-формой, но он должен работать, если вы добавите в веб-конфигурации этого правила:

<authentication mode="Forms" /> 
+0

<режим проверки подлинности = "формы"> <формы loginUrl = "~/UserInterface/WebFormLogin" timeout = "2880" /> bilal

0

, как вы создаете ваш печенье, это не печенье аутентификации. Asp.net обрабатывает процесс аутентификации для вас, если вы создаете новый проект веб-форм asp.net. Но если вы хотите создать свой собственный файл cookie для проверки, these are the steps, что вы должны следовать.

FormsAuthenticationModule от asp.net аутентифицирует пользователя, проверяя билет аутентификации. У вашего файла cookie есть только одно имя. Вы должны создать билет. Also check this link.

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