注销并终止会话

use*_*755 4 coldfusion session logout coldfusion-9 coldfusion-10

我有一个工作正常的登录页面.现在我想退出.

以下是我的header.cfm文件中的链接.如果会话变量是true显示"注销".如果没有,则显示"登录".所以我只想注销.

<a id="login-link" href="login.cfm">
     <cfif session.userLoggedIn>logout <cfelse>LogIn</cfif>
</a>
Run Code Online (Sandbox Code Playgroud)

的Application.cfc

public boolean function onRequestStart(string targetPage)
{

    if(findNocase("login.cfm", arguments.targetPage))
    {
        return true;
    }
    else if(session.userLoggedIn)
        return true;
    else
    {
        include "login.cfm";
        return false;
    }
}

public void function onSessionStart(struct sessionObj)
{

    session.userLoggedIn = false;
}
Run Code Online (Sandbox Code Playgroud)

logIn.cfm

<cfif isDefined("form.btn_login") >
    <cfset userResultResponse =  communtiyServic.getUsers(form.user,form.pwd)>
    <cfset userQry = userResultResponse.getQryData() >

        <cfif userQRY.recordCount gt 0 >
            <cfset session.userLoggedIn = true />
            <cflocation url="index.cfm" >
        <cfelse>
            <cfoutput>invaled userName or password </cfoutput>
    </cfif>



</cfif>
Run Code Online (Sandbox Code Playgroud)

Ada*_*ron 6

如果你正在使用CFIDCFTOKEN你的会话识别cookie(你可能不应该,但它是默认值),那么你应该只需要调用SessionInvalidate()你的logout()方法.这将使服务器和客户端之间的会话连接无效.我不确定它是否会使服务器上的会话数据到期,但如果没有,它将在超时期限后自动超时.同时它在客户端无法访问,无论出于什么意图和目的,它都能满足您的需求.