我需要从非安全的CF页面发布到安全的CF页面。我不想在发送值的页面上执行用户身份验证,因为这是一个相当繁琐的过程,因为这个遗留站点的设置方式,其次是因为发送值的页面充当了服务之间的服务。与用户相对的两个不相关的订单管理系统。
现在,当我尝试发帖时,响应结果是重定向到主页的登录信息。有没有办法通过强制用户身份验证来发布或接收页面?
我正在使用<cfhttp>
将值发布到帖子页面,其中有一系列<cfparam>'s
我正在传递值。将这些值传递到帖子页面后,当帖子页面触发重定向到主页时,因为帖子页面是订单管理系统中的内部页面,并显示为客户端登录并为其创建会话。
答案 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
}