2013-03-02 5 views
6

新MVC4アプリケーション作成のUserProfileテーブルをユーザーID(int)を取得しますコントローラにユーザー名(nvarchar型)新しいMVC4アプリケーションに

string currentUser = User.Identity.Name; // returns UserName 

    var mu1 = Membership.GetUser(); // returns null 

    var mu2 = Membership.GetUser(currentUser); // returns null as well 

私はスレッドをたくさん読んで、それらはすべて、私もユーザーと会員テーブルに持っていないGUIDを、得ることについて話しています。

現在ログインしているユーザーのUserId(int)を取得する方法はありますか?

+0

を得ることができますか? – andri

+1

@andri、広告FKを別のテーブルに格納する。 – mishap

+0

FKとしてユーザ名を使用してみませんか?ユーザー名はユニークですね。 – andri

答えて

0

mu1mu2には、ユーザーが正常に認証された場合、MembershipUserのインスタンスが含まれます。 MembershipUserは、ユーザの識別子を含むタイプobjectProviderUserKeyプロパティを持ちます。

Membership.GetUser()には、アプリケーション用に接続され、ユーザーが認証されるためにMembershipProviderが必要です。 nullが返されているので、上記の条件の1つが満たされていないことが示唆されます。

3

あなたは

WebSecurity.GetUserId(User.Identity.Name); 

追加情報をintとしてユーザーIDを取得することができます:あなたはAccountControllerよりも別のコントローラを使用する場合は、コントローラクラスの上に[InitializeSimpleMembership]を追加する必要があります。

12

コントローラの先頭に[InitializeSimpleMembership]を追加して、のFiltersディレクトリにある単純なメンバーシップを初期化するようにしてください。

次に、あなたは、いくつかの異なる方法でユーザーIDにアクセスすることができます。

int mu1 = (int)WebSecurity.CurrentUserId; 
int mu2 = (int)Membership.GetUser().ProviderUserKey; 
+0

My InitializeSimpleMembershipAttributeはFilters \ InitializeSimpleMembershipAttributeにありますので、コントローラの上部にある 'Using RecreationServicesTicketingSystem.Filters;'を追加しましたが、 'mu1 =(int)WebSecurity.CurrentUserId;' intは 'Websecurity 'という名前は存在しません現在の状況では、だから私は 'WebMatrix.WebDataを使用して、使用しました;これはまだ動作しますか? – TykiMikk

0

あなたはIDが必要ですなぜあなたはユーザーID

if (Request.IsAuthenticated) 
{ 
    var membership = (SimpleMembershipProvider)Membership.Provider; 
    int idUser = membership.GetUserId(User.Identity.Name); 
} 
関連する問題