Pregunta

Estoy considerando seriamente alejarme de CF8 CFLOGIN porque está vinculado al servidor que generó el inicio de sesión. En un entorno de carga equilibrado, está atascado con sesiones adhesivas si no hace una implementación personalizada.

¿Alguien tiene alguna fuente que imite cflogin que escriba y se gestione desde el alcance del cliente? Tal vez incluso un diseño que coincida bien con un reemplazo de cambio de nombre en el rol de isuserin [cualquier].

¿En qué debo pensar cuando considero escribir una implementación de reemplazo para CFLOGIN?

¿Fue útil?

Solución

Aquí hay un no básico que no cflogin enfoque utilizando variables almacenadas en el alcance del cliente. Utilizamos un enfoque similar para sesiones no estancadas en nuestro clúster de servidor detrás de nuestro equilibrador de carga.

Este código debería vivir en Application.cfc -> onRequestStart() método:

<!--- 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>

Hay cosas de rol de usuario, pero espero que esto ayude como punto de partida.

Otros consejos

Personalicé el Asistente de inicio de sesión de CF a través de DreamWeaver para ser portátil y para usar una tabla de DB para la autenticación y la gestión de roles. Debido a esto, puedo usarlo como inicio de sesión de un solo usuario o inicios de sesión de múltiples cuentas. Nunca he usado cflogin y no lo ha necesitado. Simplemente dejo los archivos en el directorio, personalizo las credenciales de inicio de sesión, y eso es todo. Funciona perfecto cada vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top