coldfusion - 在 Application.cfc 中设置 Session 变量

标签 coldfusion coldfusion-10 application.cfc

您好,我对 ColdFusion 10 非常陌生,尤其是 Application.cfc。这很令人困惑。 我创建了 Application.cfc,并在该 cfc 中创建了以下内容:

我的问题是:
1. 为什么会出现 session 错误? (请参阅下面的代码)

2. sessionEnd函数中应该放什么?

  <!--- Application.cfc --->
   <CFCOMPONENT displayname="Application" output="true">

     <cfset THIS.Name = "MyTestApp" />
     <cfset THIS.ApplicationTimeout = CreateTimeSpan(0,0,60,0) />
     <cfset THIS.SessionManagement = true />
     <cfset THIS.SessionTimeout = CreateTimeSpan( 0, 0, 30, 0 ) />
     <cfset THIS.SetClientCookies = false />

    <cfset THIS.SetClientCookies = false />

    <cffunction name="OnApplicationStart" access="public" 
                                          returntype="boolean" output="false">

       <cfset application.Main_DSN = "MyTestDB">

    </cffunction>



    <cffunction name="onApplicationEnd" output="false"> 
       <cfargument name="applicationScope" required="true">

    </cffunction>


    <cffunction name="OnSessionStart" access="public" returntype="void" output="false" 
                                         hint="Fires when user session initializes">

       <cfset session.loggedin = "NO">
       <cfset session.username = "">
       <cfset session.userrights = "">
       <cfset session.usergroup = "">  

  </cffunction>


 <!--- After user login, I have checklogin.cfm --->
 <cfif mylogin NEQ true><!--- Login failed, go redirect to login page --->
    <cflocation url="login.cfm"> 
 <cfelse>
       <cfset session.loggedin = "YES"><!--- ??? error: see below --->
   <cfset session.username = "#Trim(Form.username)#">
   <cfset session.userrights = "#Trim(Form.userrights )#">
   <cfset session.usergroup = "#Trim(Form.usergroup)#">     
 </cfif>

 <cffunction name="onSessionEnd">

    <!--- Not sure what can I put in here????? --->    

 </cffunction>

最佳答案

您的登录代码位于 Application.cfc 文件中的任何事件处理程序之外,因此该代码将首先运行...在任何事件处理程序之前!

Application.cfc中代码的执行顺序为:

  • 任何事件处理程序之外的代码(无论其位于文件中的位置)
  • onApplicationStart()
  • onSessionStart()
  • onRequestStart()
  • 等等

因此,您不能让代码在其他事件处理程序之外引用 session 范围(或应用程序范围)。只有在 onSessionStart() 触发后,您才能开始使用 session 变量。以前没有。

关于coldfusion - 在 Application.cfc 中设置 Session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24210100/

相关文章:

coldfusion - 当前模板的修改日期

冷聚变 8 : IsDefined ('URL.variable' ) and is not ""?

jquery - 如何将 select2 无限滚动与 Coldfusion 一起使用?

ColdFusion Application.cfc & cfinvoke & THIS 范围

function - cffunction 访问=

rest - 如果 PATCH 不支持服务器端,如何解决 PATCH 请求

java - 创建一个 ANTLR 语法规则,如果在函数声明上方找到 doctype 注释,则返回函数名称作为标记

cookies - ColdFusion 10 CFCookie 不遵守域属性

mysql - 个性化欢迎辞

coldfusion - Application.cfc 中的组件级属性