ASP.NET Identity2.0で現在のユーザーIDを取得します


81

IdentityFrameworkの新しい2.0バージョンを使用するように切り替えました。1.0では、を使用してユーザーオブジェクトを取得できましたmanager.FindByIdAsync(User.Identity.GetUserId())。このGetUserId()メソッドは2.0には存在しないようです。

今私が理解できるのmanager.FindByEmailAsync(User.Identity.Name)は、usersテーブルのusernameフィールドを参照するものを使用することだけです。私のアプリケーションでは、これは電子メールフィールドと同じに設定されています。

誰かが自分の電子メールを更新する必要があるときに、これが将来的に問題を引き起こすことがわかります。Identity 2.0フレームワークの不変の値(idフィールドなど)に基づいて、現在ログインしているユーザーオブジェクトを取得する方法はありますか?


どのようにしてUserIdを取得しましたか、教えていただけますか。同じ問題が発生しています。
Ammar Khan 2014

回答:


108

GetUserId()は上の拡張メソッドでIIdentityあり、にありMicrosoft.AspNet.Identity.IdentityExtensionsます。で名前空間を追加したことを確認してくださいusing Microsoft.AspNet.Identity;



2
それはIdentity2では機能していないようです。提案をお願いします
Ammar Khan 2014

2
まだそこにあるはずです。現在、Identity 2プロジェクトでGetUserId()を使用しています。
Anthony Chu

4
Identity 3.0では、これはSystem.Security.Principal名前空間に移動したように見えます。
サム

現在のユーザーロールを取得する方法はありますか?いつ役割を設定する必要がありますか?注:私は..カスタムストレージプロバイダを使用しています
Jeeva JSB

61

Asp.net Identity 2.0でCurrentUserIdを取得するには、最初にインポートします Microsoft.AspNet.Identityます。

C#:

using Microsoft.AspNet.Identity;

VB.NET:

Imports Microsoft.AspNet.Identity


そして、User.Identity.GetUserId()どこにでも電話をかけます。

strCurrentUserId = User.Identity.GetUserId()

このメソッドは、現在のユーザーIDをデータベース内のユーザーIDの定義済みデータ型として返します(デフォルトはString)。


1
Microsoft.AspNet.Identity名前空間に対応するDLLはどこにありますか?
franziee 2015

15

あなたが私のようで、ユーザーエンティティのIDフィールドがIntまたは文字列以外のものである場合に備えて、

using Microsoft.AspNet.Identity;

int userId = User.Identity.GetUserId<int>();

トリックを行います


4

私も同じ問題を抱えていました。現在、Asp.net Core2.2を使用しています。この問題は、次のコードで解決しました。

using Microsoft.AspNetCore.Identity;
var user = await _userManager.FindByEmailAsync(User.Identity.Name);

これが誰かに役立つことを願っています。


1
あなたは私の人生を救った
サムTUBB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.