2010-01-01 3 views
0

En tant qu'utilisateur, lorsque je vois une case à cocher «se souvenir de moi», je m'attends à ce qu'il se souvienne de moi - pas seulement lorsque je ferme mon navigateur, mais quand je reviens sur le site après une semaine.Downside to Forever Timeout dans ASP.NET MVC?

Donc, dans mon application ASP.NET MVC J'étudie actuellement les valeurs web.config suivantes:

<authentication mode="Forms"> 
    <forms defaultUrl="/" loginUrl="/account/login" name=".ASPXAUTH" timeout="50000000" /> 
</authentication> 

Je prévois aussi userIsOnlineTimeWindow = « 20 » d'avoir encore des statistiques décentes sur qui est en ligne. Je prévois également d'installer une machineKey afin que l'utilisateur ne soit pas éjecté quand IIS recycle.

Réflexions sur cette configuration? Ma plus grande préoccupation est que cela va engloutir des ressources - mais le fera-t-il dans une application MVC apatride? N'est-ce pas lié à la variable sessionState timeout par opposition au timeout d'authentification? Et sessionState n'est plus pertinent dans MVC? J'ai vu des informations contradictoires et j'essaie d'aller au fond des choses.

Aussi, si je prends cette approche, je suppose que cela devrait également prendre soin de l'utilisateur qui remplit un formulaire pendant une longue période avant de cliquer sur soumettre et ils perdent leur travail. J'ai vu des messages liés à cela, mais j'essaie de résoudre deux problèmes à la fois (garder en vie tout en regardant la page et aussi rester en vie pendant des jours si je disais «souvenez-vous de moi».)

Un problème que je vois est que même Si l'utilisateur ne dit pas «se souvenir de moi», il se souviendra d'eux jusqu'à ce qu'ils ferment le navigateur (pour moi, cela correspond aux attentes des utilisateurs). L'autre problème est que je devrais effectuer des contrôles supplémentaires sur IsApproved et IsLockedOut par http://scottonwriting.net/sowblog/posts/11167.aspx.

pensées? en particulier sur la question des ressources du système. Merci.

Répondre

0

FormsAuthentication est stocké comme un cookie dans le navigateur du client et n'utilisera toutes les ressources par lui-même. le timeou Le réglage ne change pas la durée de conservation de quelque chose dans la mémoire du serveur ou tout ce qui a trait au stockage de la session normale. Si vous comptez uniquement sur l'ID utilisateur/nom que vous obtenez de FormsAuthentication (HttpContext.User), alors oui, il y aura probablement des problèmes avec l'administration des comptes d'utilisateurs comme vous l'avez indiqué. Il serait bon de consulter les données utilisateur actuelles une fois par demande.

+0

Quand vous dites les données utilisateur actuelles, vous voulez dire avec GetUser? Cela l'obtient de la base de données d'adhésion tandis que HttpContext.User inclut les informations de cookie et de session, correct? – Vince

+0

Oui, à partir du lien que vous avez posté, il semble que Membership.GetUser() fasse ce que je voulais dire. – rmac