11

MVC3 アプリケーションでクライアントからのクリックを処理するために SignalR を使用しています。

ユーザーが何かをクリックするたびに、ログインしているユーザーを確認する必要があります。

これが MVC3 コントローラー内にある場合は、次のようにします。

if (User.Identity.IsAuthenticated)
{
    string username = User.Identity.Name;

    //My code here.
}

ただし、このコードの実行は Controller クラス内ではありません。

基本的に、コントローラの外部からログインしているユーザー名にアクセスするにはどうすればよいですか?

4

1 に答える 1

14

基本的に、コントローラの外部からログインしているユーザー名にアクセスするにはどうすればよいですか?

どこからアクセスしたいかによって異なります。にアクセスできない場合HttpContextは、いつでも an を試して、HttpContext.Current.User別のスレッドなどの何らかの理由で null にならないように祈ることができます。これは、タスクと多くの非同期処理に依存する SignalR で特に可能性が高くなります。SignalR のハブ内にある場合は、ユーザーにアクセスできます。

public class Chat: Hub
{
    public void Foo()
    {
        string username = Context.User.Identity.Name;
    }
}

個人的には、使用することはお勧めしませんHttpContext.Current。あなたが達成しようとしていることと、より良い方法があることを保証する場所に応じて.

于 2011-09-02T22:18:52.827 に答える