2016-11-01 15 views
0

Context.User.Identity.Name現在、私はWebフォームを使用しています、常に空です: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属性の証明書を装飾する必要があります。 は私がWebフォームで試したことがないが、あなたはウェブの設定でこのルールを追加した場合、それが動作するはずです:

<authentication mode="Forms" /> 
+0

bilal

0

あなたのクッキーを作成する方法を、それが認証Cookieではありません。 Asp.netは、新しいasp.net Webフォームプロジェクトを作成すると、認証プロセスを処理します。しかし、独自の認証クッキーを作成する場合は、それに従わなければならないthese are the stepsが必要です。

asp.netのFormsAuthenticationModuleは、認証チケットを確認してユーザーを認証します。あなたのクッキーには名前が1つしかありません。チケットを作成する必要があります。 Also check this link

関連する問題