web-dev-qa-db-fra.com

Obtenir l'ID de l'utilisateur actuel Membre ASP.NET

Comment avez-vous réussi à obtenir l'ID de l'utilisateur actuel à l'aide du fournisseur d'adhésion ASP.NET? Mon application étant une approche MVC 3 utilisant Database First, j'ai donc créé ma propre base de données et le fournisseur d'adhésion et le fournisseur de rôles utilisent mes tables (adhésion personnalisée et fournisseur de rôles).

Dans l'une de mes pages (commentaires), l'utilisateur peut envoyer des commentaires sur mon site Web. S'il est connecté, je souhaite inclure l'ID utilisateur dans le tableau lors de l'insertion.

Mais étant donné que l’adhésion ASP.NET est une identité IIent, je ne peux accéder qu’à son nom. Je ne veux pas créer un lien entre 2 tables en utilisant le nom, je veux l'ID!

Alors, que faites-vous dans votre application pour cette tâche TRÈS simple? Je veux dire, dans presque toutes les pages où un utilisateur connecté a besoin d'insérer une valeur, nous avons besoin de l'ID de l'utilisateur pour créer la clé étrangère correcte dans la table user, non? En passant, je suis très novice dans ce framework MVC. Avant, j’utilisais ASP.NET aspx et, pour les informations des utilisateurs, j’utilisais la session qui m’a donné l’ID, le nom et d’autres champs nécessaires. Étant donné que cette implémentation utilisant l'objet Session m'a posé problème en hébergement partagé, je souhaite utiliser la véritable appartenance.

Merci!

MODIFIER

L'ID que je veux doit être un entier (en fait, je veux le champ UserID qui se trouve dans la table User).

11

Essaye ça;

MembershipUser mu = Membership.GetUser("username");
string userId = mu.ProviderUserKey.ToString();

Pour l'utilisateur actuellement connecté, vous pouvez utiliser sans passer le nom d'utilisateur;

string userId = Membership.GetUser().ProviderUserKey.ToString();
30
Kaf

Je voulais partager comment obtenir l'identifiant utilisateur pour Identity 2.0:

string UserId = System.Web.HttpContext.Current.User.Identity.GetUserId();
4
JoshYates1980

J'ai rencontré un problème similaire. J'ai (pour d'autres raisons également) créé une classe de contrôleurs de base dont tous les autres contrôleurs ont hérité. Vous pouvez demander à la classe de base de conserver les informations de l'utilisateur pour pouvoir les utiliser à tout moment.

0
IronMan84

en supposant que vous avez tout configuré correctement pour votre fournisseur dans votre web.config, et puisque vous pouvez obtenir le nom d'utilisateur, je vous recommande:

Dim muser As MembershipUser = Membership.GetUser(userName)

Voici des détails sur l'objet MembershipUser: http://msdn.Microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.WEB.SECURITY.MEMBERSHIPUSER%29; % 22.NETFRAMEWORK% 2cVERSION% 3dV4.0% 22% 29; k% 28DevLang-VB% 29 & rd = true

de nombreuses propriétés autres que le nom disponible. L'identifiant que vous voulez s'appelle 'ProviderUserKey'

0
Frank Thomas

Serait-ce ce que votre après?

ID utilisateur de l'authentification d'adhésion asp.net?

Personnellement, j'ai ma propre classe qui encapsule la récupération de ces détails par le nom d'utilisateur, ainsi que toutes les données personnalisées dont j'ai besoin dans mon application.

Cordialement

0
Beats

Pour obtenir le nom d'utilisateur actuel, vous pouvez essayer de suivre

string currentUserId= Convert.ToString(Membership.GetUser().ProviderUserKey);
0
juhi