質問

ログインを生み出したサーバーに結び付けられているため、CF8 Cfloginから離れることを真剣に考えています。ロードバランスの取れた環境では、カスタム実装を行わないと、粘着性のセッションに固執します。

クライアントの範囲から書いて管理されるCfloginを模倣するソースはありますか?たぶん、イスサリン[あらゆる]の役割の名前の置換とよく一致するデザインでさえ。

Cfloginの代替実装を書くことを検討するとき、私は何を考えなければなりませんか?

役に立ちましたか?

解決

これが基本的な非です 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>

ユーザーの役割がありますが、これが出発点として役立つことを願っています。

他のヒント

DreamWeaverを介してCFログインウィザードをカスタマイズして、認証と役割管理のためにDBテーブルを使用しました。このため、シングルユーザーログインとして、または複数のアカウントログインとして使用できます。私はCfloginを使用したことがなく、必要もありませんでした。ファイルをディレクトリにドロップし、ログイン資格情報をカスタマイズするだけです。毎回完璧に機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top