J'ai le code que je regarde à travers concernant les temps de session du site Web. Dans le web.config je suis tombé sur ce code.
<authentication mode="Forms">
<forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>
<sessionState timeout="30" />
Est-ce que quelqu'un sait si l'un l'emporte sur l'autre et en quoi ils sont différents? Merci.
Ce sont des choses différentes. La valeur Délai d'expiration de l'authentification par formulaire définit le délai, en minutes, pendant lequel le cookie d'authentification est défini pour être valide. Autrement dit, après value
nombre de minutes, le cookie expirera et l'utilisateur ne sera plus authentifié. être redirigé vers la page de connexion automatiquement-. La valeur slidingExpiration=true
indique en gros qu'après chaque demande, le temporisateur est réinitialisé et tant que l'utilisateur fait une demande dans les délais impartis, il continuera à être authentifié. Si vous définissez slidingExpiration=false
, le cookie d'authentification expirera après value
nombre de minutes, que l'utilisateur fasse ou non une demande dans le délai imparti.
La valeur du délai d'expiration SessionState
définit la durée pendant laquelle un fournisseur d'état de session doit conserver des données en mémoire (ou le magasin de sauvegarde utilisé, SQL Server, OutOfProc, etc.) pour une session particulière. Par exemple, si vous placez un objet dans Session en utilisant la valeur de votre exemple, ces données seront supprimées au bout de 30 minutes. L'utilisateur peut toujours être authentifié mais les données de la session peuvent ne plus être présentes. La valeur Session Timeout
est toujours réinitialisée après chaque demande.
La valeur de glissementExpiration = true indique en gros qu'après chaque demande effectuée, le temporisateur est réinitialisé et tant que l'utilisateur fait une demande dans les délais impartis, il continue à être authentifié.
Ce n'est pas correct Le délai d'expiration du cookie d'authentification ne sera réinitialisé que si la moitié du délai est écoulée.
Voir par exemple https://support.Microsoft.com/de-ch/kb/910439/en-us ou https://itworksonmymachine.wordpress.com/2008/07/ 17/forms-authentication-timeout-vs-session-timeout /
De ce que je comprends, ils sont indépendants les uns des autres. En gardant le délai d'expiration de la session inférieur ou égal au délai d'expiration de l'authentification, vous pouvez vous assurer que les variables de session spécifiques à l'utilisateur ne sont plus conservées après l'expiration du délai d'authentification (si cela vous concerne, ce qui, à mon avis, est la réponse normale question). Bien sûr, vous devrez gérer manuellement la disposition des variables de session lors de la déconnexion.
Voici une réponse décente qui peut répondre à votre question ou au moins vous orienter dans la bonne direction:
La différence est que l'un (délai d'expiration des formulaires) concerne l'authentification de l'utilisateur et l'autre (délai d'expiration de la session) concerne la durée de stockage des données en cache sur le serveur. Donc, ce sont des choses très indépendantes, donc l’une n’a pas préséance sur l’autre.
<sessionState timeout="2" />
<authentication mode="Forms">
<forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
</authentication>
Cette configuration m'envoie à la page de connexion toutes les deux minutes, ce qui semble contredire les réponses précédentes
Pour tous ceux qui tombent sur cette question, reportez-vous à la documentation fournie par MS. Elle contient de très bons détails concernant le paramètre Délai d'expiration de FormsAuthentication.
Cette documentation explique en détail le commentaire fait par bmode dans la réponse acceptée - à propos du cookie persistant (Session vs Expires)