0

誰かがここで私を助けてくれることを願っています。ASP、MVC、C# は初めてですが、それを学ぶために Web アプリケーションを構築しようとしています。ユーザー用のすべてのコントローラー、ビューなどを作成するデフォルトのアプリケーションを作成しましたが、すべて正常に機能します。

クラスを作成しました。そのクラス内で、ログインしているユーザーのユーザー ID またはユーザー名を取得する必要があります。UserManager と SignInManager をクラスのコンストラクターに挿入しようとしましたが、その呼び出しを呼び出すコントローラーは、必要なパラメーターを渡していないと文句を言います。

これは生意気かもしれませんが、誰かがクラス内からユーザーIDのようなものを取得する方法の基本的な例を持っている場合、おそらく逆方向に作業して何が起こっているのかを理解できるでしょう. オンラインで何時間も検索していますが、うまくいく例が見つかりません。

VS 2015 Asp Core Net RC2 の使用

ありがとう

4

2 に答える 2

2

ユーザー ID は に存在しますHttpContext。Identity はヘルパーを追加するだけですがHttpContext、コントローラーの外部には存在しないインスタンスが必要です。これは XY 問題の典型的な例のように思えます。問題自体を解決する方法を尋ねるのではなく、問題にアプローチすることを決定した特定の方法で問題を解決するために何かを行う方法を尋ねているのです。一般的に言えば、コントローラーの外部でユーザー ID が必要な場合は、そこからユーザー ID を取得しようとするのではなく、コントローラーからリテラルのユーザー ID を呼び出し先に渡す必要があります。

于 2016-11-14T20:40:07.007 に答える
0

これは私のために働いた

HttpContextAccessor (例: _httpContextAccessor )のインスタンスを取得する方法については、この記事のInside Servicesセクションを参照してください

次に、次のようにユーザー ID を取得できます。

long userId = ClaimsPrincipalExtensions.GetUserId(_httpContextAccessor.HttpContext.User);

メソッドClaimsPrincipalExtensions.GetUserIdを既に作成していると仮定して、まだ作成していない場合は、これを確認してください。

于 2018-08-11T14:38:27.587 に答える