在coldfusion中正确使用CFLOCK?

时间:2016-05-17 20:13:25

标签: coldfusion race-condition

所以我有点困惑。我在Intranet应用程序中遇到了竞争状况。

用户间歇性地获取了错误的ID,并且在显示谁创建了帖子和事件以及未创建帖子和事件时会造成轻微的打嗝。

我的问题是我已经设置了一些cflock标签来试图阻止这种情况,但它们似乎并没有起作用;现在,我想知道我是否正确使用它们。

我们的员工在技术上受到挑战....我们在登录他们的Windows会话后自动将他们登录到Intranet应用程序(不是很安全,我知道,但这并不重要)。

然后在员工权限检查下,检查他们是否有帐户,如果他们这样做,我会返回与其session.name匹配的ID。然后在他们的会话中,ID用于跟踪和识别他们是谁以及他们做什么以及他们的访问级别。

现在我已经在这个顶部添加了一个cflock,因为我收到了混合ID的用户,但它似乎没有用。我应该在application.cfc或WhosOnline.cfc本身周围的调用周围锁定所有这些信息的查询吗?我已经浏览了文档,也许我错过了一些东西,或者我只是没有得到它。以下是我的application.cfc

的摘录
<cffunction
        name="OnSessionStart"
        access="public"
        returntype="void"
        output="false"
        hint="I fire when a new session begins.">

        <cflock scope = "Application"
                timeout = "10" type = "Exclusive">

            <!--- Set up session variables. --->
            <CFSET SESSION.domain = "GL\">            
            <cfset SESSION.LoggedIn = false />
            <cfset SESSION.Name = "#REPLACENOCASE(AUTH_USER,'#session.domain#','')#" />
            <cfset session.filestore = "/documents/">
            <CFSET session.hostname="#CreateObject("java", "java.net.InetAddress").getByName("#cgi.REMOTE_HOST#").getHostName()#">

            <CFSET session.todayodbc = #createodbcdate(now())#>
            <CFSET SESSION.usercheck = false>

            <cfset session.securityRedirect = "/securitywarning.cfm" >

            <!--- Staff permissions check --->
            <CFSET objNewUser = CreateObject("component", "cfc.WhosOnline")>
            <cfset qryNewUser = #objNewUser.newusercheck(session.name)#>
            <cfset session.staffid = #qryNewUser#>

            <!---Staff Name --->
            <cfset objName = CreateObject("component", "cfc.WhosOnline")>
            <cfset qryName = #objName.staffName(session.staffid)#>
            <cfset session.StaffName = '#qryName#'>


            <cfset session.root = "E:\web-sites\intranet2\">

            <!--- Return out. --->
            <cfreturn />

        </cflock>
    </cffunction>

0 个答案:

没有答案