Question

J'envisage sérieusement de m'éloigner de CF8 CFlogin car il est lié au serveur qui a engendré la connexion. Dans un environnement de charge équilibré, vous êtes coincé avec des sessions collantes si vous ne faites pas d'implémentation personnalisée.

Quelqu'un a-t-il une source qui imite CFlogin qui écrit et est gérée à partir de la portée du client? Peut-être même une conception qui correspond bien à un renom sur le rôle d'isuserin [n'importe quel] rôle.

À quoi dois-je penser lorsque j'envisage d'écrire une implémentation de remplacement pour CFlogin?

Était-ce utile?

La solution

Voici un non de base cflogin Approche en utilisant des variables stockées dans la portée du client. Nous utilisons une approche similaire pour des sessions non collantes sur notre cluster de serveurs derrière notre équilibreur de charge.

Ce code devrait vivre Application.cfc -> onRequestStart() méthode:

<!--- handle login *post* --->
<cfif structKeyExists(FORM, "pageaction") and FORM.pageAction eq "adminlogin">

<!--- attempt to log user in --->

    <cfif loginSuccessful>

        <!--- Set client variables for session management --->
        <cfset CLIENT.lastHit = now() />
        <cfset CLIENT.loggedIn = 1 />

        <!--- redirect to home page --->

    <cfelse>

        <!--- redirect to login page with message --->

    </cfif>

<!--- all other requests, except for the login page --->
<cfelseif structKeyExists(CLIENT, "lasthit") and structKeyExists(COOKIE, "cfid") and structKeyExists(CLIENT, "cfid") and listLast(CGI.SCRIPT_NAME, "/") neq "login.cfm">    

    <!--- Check for timeout --->
    <cfif (datediff("n", CLIENT.lastHit, now()) lte 10) and (CLIENT.loggedIn is 1) and (CLIENT.cfid is COOKIE.cfid)>

        <!--- record last hit --->
        <cfset CLIENT.lastHit = now() />

    <cfelse>

        <!--- timeout! redirect to login page --->
        <cflocation URL="http://mydomain/login.cfm" addtoken="false" /> 

    </cfif> 

</cfif>

Il y a des trucs de rôle d'utilisateurs, mais j'espère que cela vous aidera comme point de départ.

Autres conseils

J'ai personnalisé l'assistant de connexion CF via Dreamweaver pour être portable et utiliser une table DB pour l'authentification et la gestion des rôles. Pour cette raison, je peux l'utiliser soit comme connexion à utilisateur unique, soit par connexion à comptes multiples. Je n'ai jamais utilisé de cflogin et je n'ai pas eu besoin de le faire. Je dépose simplement les fichiers dans le répertoire, personnalise les informations d'identification de connexion, et c'est tout. Fonctionne parfaitement à chaque fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top