CFLOGIN替代是必要的还是我错过了什么?
-
28-09-2019 - |
题
我正在认真考虑离开CF8 CFLOGIN,因为它与产生登录的服务器相关。在负载平衡的环境中,如果您不进行自定义实现,则会粘贴粘性会话。
是否有人有任何模仿CFLOGIN写入并从客户端范围进行管理的来源?甚至可能与Isuserin [任何]角色的重命名替换替换替换均配合的设计。
当我考虑为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