coldfusion9中的登录系统

coldfusion9中的登录系统,coldfusion,coldfusion-9,cflogin,Coldfusion,Coldfusion 9,Cflogin,我正在使用一个非常旧的登录系统,我的公司以前在一个使用框架的网站上使用过这个系统。 以前,当有人尝试错误的用户/过程组合时,框架将加载一个简单的cfinclude文件,其中包含登录表单和一条错误消息。 现在,我在一个弹出窗口中使用一个表单来调用application.cfc,但是页面没有在弹出窗口中返回错误消息,而是将cfinclude文件从应用程序组件加载到一个新页面 因此,我需要一些事情发生在这个应用程序。首先,我需要初始弹出窗口保持不动,如果用户/通行证组合错误,页面不应提交,最后我需要错

我正在使用一个非常旧的登录系统,我的公司以前在一个使用框架的网站上使用过这个系统。 以前,当有人尝试错误的用户/过程组合时,框架将加载一个简单的cfinclude文件,其中包含登录表单和一条错误消息。 现在,我在一个弹出窗口中使用一个表单来调用application.cfc,但是页面没有在弹出窗口中返回错误消息,而是将cfinclude文件从应用程序组件加载到一个新页面

因此,我需要一些事情发生在这个应用程序。首先,我需要初始弹出窗口保持不动,如果用户/通行证组合错误,页面不应提交,最后我需要错误消息出现在弹出窗口的某个位置

如果有人以前做过类似的事情,我将非常感谢您的反馈

这是我代码的一部分:

登入表格:

<!--- loginErrMsg display - to tell why login is denied --->
<cfif isdefined("loginErrMsg")><span style="color:red">#loginErrMsg#</span><br /></cfif>

<form name="LoginForm" id="LoginForm" action="<cfif test is false>https://secure.example.com</cfif>#loginFormAction#" method="post" target="_top">
</cfoutput>
<input type="hidden" name="loginPost" value="true">
    <p>
      Login below to take advantage of the great services we offer:
    </p>

    E-mail:<input name="j_username" class="loginform" type="text" size="30" maxlength="50" id="j_username"> 
    Password: <input name="j_password" type="password" size="30" maxlength="16" class="loginform">
    <br />

    <input type="submit" name="btn" value="Submit" class="bluebuttonnormal">
    </form>
Application.cfc代码:

<cflogin applicationtoken="swmadmin">
        <cfif NOT IsDefined("cflogin")>
            <cfinclude template="login.cfm">
            <cfabort>
        <cfelse>
            <cfquery name="userlookup" datasource="#ds#">
            SELECT clientadminID, roles, isFaxOnly, acctEnabled FROM clientadmin
            WHERE
            username=<cfqueryparam value="#cflogin.name#" CFSQLTYPE="CF_SQL_VARCHAR" maxlength="50">
            and password=<cfqueryparam value="#cflogin.password#" CFSQLTYPE="CF_SQL_VARCHAR" maxlength="16">
            </cfquery>
            <cfif userlookup.recordcount eq 0>
                <cfset loginErrMsg = "Invalid login.">
                <cfinclude template="login.cfm">
                <cfabort>

    </cflogin>
我使用的是我公司以前使用过的一个非常旧的登录系统 在使用框架的网站上

如果这是一个新网站,不要使用它。登录表单非常简单,可以在睡眠中完成。重新开始,把它做好

因此,我需要一些事情发生在这个应用程序。首先,我需要 初始弹出窗口将保持打开状态,如果 user/pass的组合是错误的,最后我需要错误 显示在弹出窗口某处的消息

您需要在这里使用AJAX解决方案,或者编写自己的解决方案,或者使用像jQuery这样的好库。检查登录值后,可以使用jQuery或简单javascript取消隐藏或更新空元素的innerHTML以显示错误消息

<cflogin ...>
...
</cflogin>
我很伤心。ColdFusion的另一个标签旨在简化一些通常做的事情,这些事情实际上没有多大帮助,并且牺牲了灵活性。没有它,您可以对应用程序进行更多的控制。请尝试类似以下伪代码的内容,而不是CFLogin

<cfcomponent>
  <cffunction name = "onRequest" ...>
    <cfargument name="targetPage" type="String" required = "true" />
    <cfif !structKeyExists(session, "roles") and !findNoCase("loginHandler.cfm",cgi.script_name)>
      <!--- notice I prevent the redirect on the form handler, otherwise the ajax will get redirected to the login.cfm page --->
      <cfinclude template = "login.cfm">
    <cfelse>
      <cfinclude template = "#arguments.targetPage#">
    </cfif>
  </cffunction> 
</cfcomponent>
然后,login.cfm将包含表单,但您的按钮将触发类似于loginHandler.cfm的命令,然后根据登录结果,您的回调函数可能用于显示错误或登录成功。当然,如果成功登录,您的ColdFusion页面必须创建会话变量,并在将结果发送回AJAX调用之前执行您希望它执行的任何操作

我使用的是我公司以前使用过的一个非常旧的登录系统 在使用框架的网站上

如果这是一个新网站,不要使用它。登录表单非常简单,可以在睡眠中完成。重新开始,把它做好

因此,我需要一些事情发生在这个应用程序。首先,我需要 初始弹出窗口将保持打开状态,如果 user/pass的组合是错误的,最后我需要错误 显示在弹出窗口某处的消息

您需要在这里使用AJAX解决方案,或者编写自己的解决方案,或者使用像jQuery这样的好库。检查登录值后,可以使用jQuery或简单javascript取消隐藏或更新空元素的innerHTML以显示错误消息

<cflogin ...>
...
</cflogin>
我很伤心。ColdFusion的另一个标签旨在简化一些通常做的事情,这些事情实际上没有多大帮助,并且牺牲了灵活性。没有它,您可以对应用程序进行更多的控制。请尝试类似以下伪代码的内容,而不是CFLogin

<cfcomponent>
  <cffunction name = "onRequest" ...>
    <cfargument name="targetPage" type="String" required = "true" />
    <cfif !structKeyExists(session, "roles") and !findNoCase("loginHandler.cfm",cgi.script_name)>
      <!--- notice I prevent the redirect on the form handler, otherwise the ajax will get redirected to the login.cfm page --->
      <cfinclude template = "login.cfm">
    <cfelse>
      <cfinclude template = "#arguments.targetPage#">
    </cfif>
  </cffunction> 
</cfcomponent>

然后,login.cfm将包含表单,但您的按钮将触发类似于loginHandler.cfm的命令,然后根据登录结果,您的回调函数可能用于显示错误或登录成功。当然,如果成功登录,您的ColdFusion页面必须创建会话变量,并在将结果发送回AJAX调用之前执行您希望它执行的任何操作

谢谢你在这篇文章上花费的时间和精力。我明天会更新我的帖子。谢谢你在这篇帖子上花费的时间和精力。我明天会去更新我的帖子。