Timeout ne fonctionne pas dans ASP.Net MVC FormsAuthentication
Je suis en utilisant FormsAuthentication, je vais avoir des problèmes de réglage de la valeur de Délai d'expiration.
J'ai vu quelques autres messages liés à cela, mais ils ne semblent pas être exactement mon problème ou de la solution proposée n'aide pas.
De mon site web.config est la suivante:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn"
timeout="1"
cookieless="UseCookies" />
</authentication>
J'ai mis un AuthorizeAttribute sur les contrôleurs que je veux sécurisé.
Je peux afficher le .Cookie ASPXAUTH (à l'aide de FireCookies), et je vois qu'il est configuré pour expirer en 1 minute après l'ouverture d'une session.
Si je debug par le biais de mon code je vois que FormsAuthentication.Timeout = 1.
Cependant mon billet ne semble pas de délai d'attente de 1 minute. Après 1 minute d'inactivité, je peut encore parcourir pour les contrôleurs avec AuthorizeAttribute.
En fait, je peux effectivement supprimer l' .Cookie ASPXAUTH à l'aide de FireCookies et je peux encore parcourir pour les contrôleurs avec un AuthorizeAttribute.
Bizarrement après avoir été inactif pendant une longue période (désolé de ne pas avoir un temps exact - j'ai été pour le déjeuner!) le Délai d'attente se produit et je suis redirigé
à l'écran de connexion.
Des idées?
source d'informationauteur bplus
Vous devez vous connecter pour publier un commentaire.
Moi aussi j'avais le même problème. En fait, c'est parce que je ne pouvais pas lire le cookie d'authentification de formulaires à partir de javascript, c'est après un certain temps
undefined
. Je voulais juste savoir si j'ai été authentifié via javascript.Plus tard, j'ai trouvé que le billet avait expiré, mais je n'ai pas été déconnecté (également. donc, je voulais résoudre ce trop)! J'ai vu votre question n'a pas été répondu que je l'ai gardé ouvert alors que j'ai travaillé mes problèmes pour une demi-journée. Ce qui suit est ce que j'ai trouvé qui semble travailler.
Ma Réponse est basée sur cette réponse. https://stackoverflow.com/a/454639/511438 par l'utilisateur ScottS
C'est dans ma ASP.NET MVC 3 du projet.
Voici mon code de connexion. Pas, la coutume d'authentification de l'utilisateur de la logique avant. Cette juste définit le ticket initial.
public class FormsAuthenticationService : IFormsAuthentication
dans la même classe, mais une méthode statique qui est accessible à partir de mondial.asax
Mondiale.asax
Ma personnalisation vient que les requêtes ajax ne pas actualiser les formulaires de ticket d'authentification. Donc, si vous vous asseyez là pour le délai, une requête ajax sera la session. Modifier que si vous voulez des requêtes ajax pour garder le ticket vivant (les adresses de mon javascript problème de cookie, pas votre déconnexion de l'inactivité de l'émission).
*(astuce, si vous êtes déconnecté, puis connectez-vous, mais revenir à la page de connexion de nouveau, la première connexion, ne spécifiez pas un returnUrl dans la querystring peut-être). *
Web.config
ici est la partie où j'ai mis expiration de la session, et le billet de délai d'attente
C'est environ combien de temps est le délai d'attente de votre session. Par défaut est de 20 minutes et vous pouvez le modifier dans le web.config comme ceci:
Une solution évidente qui pourrait facilement être regardé par certaines personnes, de compensation les cookies du navigateur ou la déconnexion devrait résoudre le problème. Si remember me est cochée, l'application permettra de vous connecter avec l'ancien cookie, peu importe les changements effectués sur le Web.Config valeur de délai d'expiration.