Le cookie expire ou le délai d'expiration de la session est trop court
J'ai ce code qui est exécuté lorsque l'utilisateur est autorisé:
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
1,
email,
DateTime.Now,
DateTime.Now.AddMinutes(120),
true,
userData);
string encTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
faCookie.Expires = authTicket.Expiration;
Response.Cookies.Add(faCookie);
J'ai ensuite rediriger vers un contrôleur/Action qui a le Authrize attribut:
[Authorize]
public class ProductsController : Controller
{
J'ai le texte suivant dans le web.config:
<authentication mode="Forms">
<forms loginUrl="~/Home/Unauthorized" timeout="2880" />
</authentication>
<sessionState timeout="120"></sessionState>
Cependant, les utilisateurs se plaignent de la durée des sessions ou de rediriger la Maison/non autorisée après quelques minutes d'inactivité.
ce qui pourrait être à l'origine de ce, que dois-je vérifier?
source d'informationauteur raklos
Vous devez vous connecter pour publier un commentaire.
Un couple de pensées avant de m'en aller dans une solution de pourquoi vos identifiants sont à échéance. Tout d'abord, le cookie FormsAuthentication et SessionState sont deux choses différentes complètement. Vous pouvez avoir l'un ou l'autre, ou les deux, ou aucun des deux. En conséquence, les délais d'attente pour ces deux éléments sont également pas liées.
Le FormsAuthentication cookie est un cookie crypté qui contient des informations de base telles que le nom d'utilisateur et une valeur d'expiration. L' .NET application utilise ce cookie une fois qu'un utilisateur est authentifié pour savoir si l'utilisateur est autorisé pour certaines ressources.
Ce qui contrôle le chiffrement et le déchiffrement de l'FormsAuthentication cookie est le MachineKey pour cette application web sur IIS. Le MachineKey est un jeu de clés utilisées pour chiffrer et déchiffrer le cookie. Par défaut, une application web sur IIS est configuré pour générer automatiquement la clé de l'ordinateur. Ce que cela signifie est que lorsque l'application démarre, un échantillon aléatoire de la machine clé est générée. Si une application recycle, vous obtenez une nouvelle clé de l'ordinateur. En outre, si vous hébergez sur un fournisseur partagé, l'hébergeur web ont généralement la charge de votre application équilibrée, sens hébergé par plus d'un serveur. Chacun de ces serveurs générer automatiquement une clé machine.
Si votre application web est sur une charge équilibrée scénario, puis chaque machine dans la batterie de serveurs web ne peut pas déchiffrer l'autre cookie crypté. Cela va donner l'apparence de "déconnexion". L'exemple de cela est de sa connexion sur Un serveur web, puis d'une demande ultérieure va de du serveur web de B. serveur Web de B ne partagent pas un machine à clé avec Un serveur web et ne peut pas déchiffrer le cookie, l'envoi à l'utilisateur de retourner à la page de connexion.
La solution est de définir la section MachineKey dans votre site web.config de sorte que chaque instance de IIS va utiliser les mêmes touches ainsi que si le pool d'applications recycle, vous avez toujours la même clé d'ordinateur.
Ici serait une exemple clé machine que vous pouvez placer dans votre site web.config
Réflexions complémentaires sont que votre expiration de votre site web.config (2880) et ce que vous êtes réellement réglage de la date d'expiration (120) ne correspondent pas. Vous pouvez vouloir que leur match.
Si vous êtes derrière un répartiteur de charge, vous voulez vous assurer que la batterie de serveurs web est à l'aide d'une clé constante comme l'a souligné Tommy réponse.
D'autres choses à vérifier que la métabase IIS settings (paramètres) pour chaque serveur sont identiques. Ils doivent avoir le même chemin et ID.
Vous aurez aussi envie de regarder la tenue de session de proc (votre site web.config ressemble proc) qui est sensible à la panne de réseau et aléatoire application recycle.
Essentiellement un résumé de ce lien.
http://msdn.microsoft.com/en-us/library/vstudio/ms178586(v=vs. 100).aspx
Si vous pouvez poster plus de votre configuration, si possible et de donner plus de détails sur votre configuration de l'environnement, il sera plus facile pour vous d'un travail plus ciblé direction.
Essayez celui-ci:
web.config Code:
Cela va vous aider.