我正在认真考虑远离CF8 cflogin,因为它与生成登录的服务器绑定在一起。在负载平衡环境中,如果不执行自定义实现,就会遇到粘性会话。
有没有人有任何模仿CFLogin的源代码,可以写入客户端作用域并从客户端作用域进行管理?甚至可能是一个与isuserinanyrole角色上的重命名替换相匹配的设计。
当我考虑为CFLogin编写一个替代实现时,我应该考虑什么?
发布于 2010-11-08 21:40:19
下面是使用存储在客户端作用域中的变量的基本非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>有用户角色的东西,但我希望这有助于作为一个起点。
发布于 2010-11-09 01:22:37
我通过Dreamweaver自定义了CF登录向导,使其成为可移植的,并使用db表进行身份验证和角色管理。正因为如此,我可以将其用作单用户登录或多帐户登录。我从来没有使用过cflogin,也不需要这样做。我只需将文件放到目录中,自定义登录凭据,就行了。每一次都很完美。
https://stackoverflow.com/questions/4094132
复制相似问题