Nous avons une page de confirmation d'email pour l'enregistrement qui peut être frappé avec un lien d'utilisation unique pour activer le compte.Asp.net Mvc FormsAuth avec LogonUserControl dans Site.Master
La nature du site est telle que nous pouvons autoriser ce lien à se connecter automatiquement à l'utilisateur. Cette exigence est en cours de révision (à ma demande!).
La situation suivante se révèle un peu déroutant:
- L'utilisateur suit le lien de confirmation dans leur email
- ces terres sur le contrôleur de confirmation.
Toutes choses bien, l'utilisateur est automatiquement connecté, en utilisant:
FormsAuth.SignIn(user.UserName,false);
La vue est renvoyée par le contrôleur
La vue utilise une page maître qui contient une partie Vue qui est le composant LogonUserControl.ascx. Dans le composant, il y a le code suivant (il sort directement du modèle de projet asp.net mvc):
if (Request.IsAuthenticated) { /*foo*/ }
Lorsque la page est affichée, Request.IsAuthenticated
est soit faux, malgré la signature de l'utilisateur au contrôleur .
Je me demande pourquoi cela pourrait être. Le maître a-t-il déjà été écrit au moment de l'appel de la méthode FormsAuth.SignIn
ou utilise-t-il incorrectement l'objet Demande pour cette vérification, car au moment de la réception de la demande, il était effectivement non authentifié?
EDIT: Il semble que le contrôleur LogOn par défaut utilise une redirection au lieu de renvoyer une vue. Cela permettrait bien sûr de résoudre le problème, mais je m'intéresse à la raison pour laquelle le scénario ci-dessus ne fonctionne pas.
Grande explication, a couru il y a quelque temps, n'a jamais compris pourquoi, maintenant je le fais. – mxmissile