Cfloginの交換が必要ですか、それとも何かが足りませんか?
-
28-09-2019 - |
質問
ログインを生み出したサーバーに結び付けられているため、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を使用したことがなく、必要もありませんでした。ファイルをディレクトリにドロップし、ログイン資格情報をカスタマイズするだけです。毎回完璧に機能します。
所属していません StackOverflow