Obtenir l'Identifiant de l'utilisateur connecté dans Asp.Net MVC 5
Je suis relativement nouveau à ASP.Net MVC et essayez d'utiliser l'utilisateur intégré la fonctionnalité de login maintenant. Je suis en mesure d'inscrire un utilisateur à l'enregistrement de la vue. Si j'essaie de me connecter avec l'utilisateur créé cela fonctionne aussi. Je suis redirigé vers la page principale.
Mais je ne suis pas en mesure d'obtenir le nom d'utilisateur de l'utilisateur actuel. J'ai essayé mon code du contrôleur HomeController et dans le AccountController, mais les deux n'ont pas de travail. La déclaration de la première ligne renvoie toujours null.
var userID = User.Identity.GetUserId();
if (!string.IsNullOrEmpty(userID))
{
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(ApplicationDbContext.Create()));
var currentUser = manager.FindById(User.Identity.GetUserId());
}
Dois-je à autre chose avant d'entrer le nom d'utilisateur?
Vous devez vous connecter pour publier un commentaire.
La réponse est là, dans votre code. Qu'est-ce retour?
Si vous utilisez ASP.NET Identité, puis après la connexion (et de la rediriger vers une autre page), le
IPrincipal.IIdentity
devrait être unClaimsIdentity
. Vous pouvez essayer ceci:Ci-dessus bloc de code n'est pas exactement, mais essentiellement, ce que le
IIdentity.GetUserId
méthode d'extension n'.Si rien de tout cela fonctionne, alors l'utilisateur ne peut pas vraiment être connecté à votre site encore. Après la connexion, vous devez rediriger vers une autre page avant que le serveur va écrire le cookie d'authentification pour le navigateur. Ce cookie doit être écrit avant le
User.Identity
a tous de cette revendication de l'information (y compris lesNameIdentifier
) sur les demandes ultérieures.User.Identity.GetUserId()
renvoie la valeur null, cela signifie que l'utilisateur est pas connecté. Assurez-vous que quelle que soit l'action que vous avez à l'appel de cette dans est décoré avec[Authorize]
, à faire valoir que seuls les utilisateurs enregistrés peuvent l'obtenir. Quiconque n'est pas connecté sera envoyé automatiquement à votre page de connexion.Login
Action, Dois-je utiliser une adresse de courriel?