Нужна ли замена CFLogin или я что-то упустил? - PullRequest
4 голосов
/ 04 ноября 2010

Я серьезно подумываю отойти от CF8 cflogin, потому что он привязан к серверу, который породил логин.В среде с балансировкой нагрузки вы застреваете в «липких» сеансах, если не выполняете пользовательскую реализацию.

Есть ли у кого-нибудь источник, имитирующий CFLogin, который выполняет запись и управляется из клиентской области?Может быть, даже дизайн, который хорошо сочетается с заменой переименования на роль isuserin [любая].

О чем мне следует подумать, когда я подумываю написать реализацию замены для CFLogin?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

Вот базовый не cflogin подход с использованием переменных, хранящихся в области КЛИЕНТА.Мы используем аналогичный подход для незакрепленных сеансов в нашем кластере серверов за нашим балансировщиком нагрузки.

Этот код должен существовать в методе Application.cfc -> onRequestStart():

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

Есть роль пользователя, но я надеюсь, что это поможет в качестве отправной точки.

0 голосов
/ 08 ноября 2010

Я настроил Мастер входа в CF через Dreamweaver для переносимости и использования таблицы БД для аутентификации и управления ролями.Из-за этого я могу использовать его как для однопользовательского входа, так и для нескольких учетных записей.Я никогда не использовал cflogin и не нуждался в этом.Я просто перетаскиваю файлы в каталог, настраиваю учетные данные для входа и все.Работает идеально каждый раз.

...