免除Coldfusion页面的身份验证

时间:2015-10-09 20:43:50

标签: coldfusion session-variables coldfusion-9

我需要从非安全的CF页面发布到安全的CF页面。我不想在发送值的页面上执行用户身份验证,因为这是一个相当繁琐的过程,因为这个遗留站点的设置方式,其次是因为发送值的页面充当了服务之间的服务。与用户相对的两个不相关的订单管理系统。

现在,当我尝试发帖时,响应结果是重定向到主页的登录信息。有没有办法通过强制用户身份验证来发布或接收页面?

我正在使用<cfhttp>将值发布到帖子页面,其中有一系列<cfparam>'s我正在传递值。将这些值传递到帖子页面后,当帖子页面触发重定向到主页时,因为帖子页面是订单管理系统中的内部页面,并显示为客户端登录并为其创建会话。

2 个答案:

答案 0 :(得分:0)

由于您没有提供任何代码,因此可以猜测它可能是什么样子以及如何为特定请求添加例外:

<cffunction name="onRequestStart" access="public" output="false" returnType="boolean">

    <cfargument name="targetPage" type="string" required="true">

    <!--- treat initialized SESSION or matching request token (rtoken) as successful authentication --->
    <cfset LOCAL.isAuthenticated = (
        isDefined("SESSION.userID")
            or
        ( structKeyExists(FORM, "rtoken") and (FORM["rtoken"] eq "some-secret-only-you-know") )
    )>

    <cfif LOCAL.isAuthenticated>

        <!--- do something... --->

    <!--- not authenticated --->
    <cfelse>

        <!--- redirect to login --->
        <cflocation url="login.cfm" statusCode="303" addToken="false">

    </cfif>

</cffunction>

现在您可以简单地将键值对rtoken=some-secret-only-you-know(即<input type="hidden" name="rtoken" value="some-secret-only-you-know" />)添加到POST中,以绕过基于会话的身份验证。 免责声明:如果用户 公开/可编辑POST参数(表单字段),则仅使用此方法。

随意提供实际情况,以便我能以更具体的方式提供帮助。

答案 1 :(得分:0)

我写了几个类似但不完全相同的应用程序。以下是我在上一篇文章中处理这些要求的方法。所有这些代码都是指定方法中的Application.cfc文件。

在onApplicationStart中:

application.securityNotNeededPages = 
"somePage.cfm,someOtherPage.cfm,someMorePages.cfm";

在onRequestStart

var ThisPage = listlast(cgi.PATH_INFO, "/");
...
if (ListFindNoCase(application.securityNotNeededPages, ThisPage) is false) {
security related code
}
else {
code for when the page does not to be secured
}