onrequeststart()
에있는 "금지 된"/ "승인되지 않은"요청을 프로그래밍 방식으로 처리하는 ColdFusion 웹 사이트가 로그인 한 사용자의 속성에 따라 Application.cfc
에 있습니다. 예를 들어 (참고 : SESSION.User
는 onSessionStart()
초기화합니다 :금지 된 페이지가 항상 403 코드로 응답해야합니까?
<cffunction name="onRequestStart" returnType="Boolean" output="false">
<cfargument name="targetPage" type="string" required="true">
<cfparam name="REQUEST.MinSecurityLevel" default="0" />
<cfparam name="REQUEST.IsLoginRequired" default="false" />
<cfif REQUEST.IsLoginRequired AND NOT SESSION.User.isLoggedIn()>
<cfscript>
SESSION.LoginMessage =
"Your session has timed out. Please log in again.";
SESSION.LastPageVisited =
getPageContext().getRequest().getRequestURI();
if (Len(Trim(getPageContext().getRequest().getQueryString())))
SESSION.LastPageVisited =
SESSION.LastPageVisited
& "?"
& getPageContext().getRequest().getQueryString();
</cfscript>
<cflocation url="/user/login/" addtoken="false" />
<cfelseif SESSION.User.getSecurityLevel() LT REQUEST.MinSecurityLevel>
<cfheader statuscode="403" statustext="Forbidden" />
</cfif>
<cfreturn true />
</cffunction>
는 IIS (버전 7)에서, 내가 유형과 오류 페이지 설정 "URL을 실행"내 사용자 지정 403 페이지의 경로가
내가. 수이 트리거, 그리고 제대로 내 사용자 지정 403 페이지를 표시하지만, 그것은 HTTP 응답 코드를 반환하는 200
이 반환되지해야 403?
난 당신이 요구하는 것에 대한 혼란 스러워요가. 제목은 특정 상황에서 403 코드를 반환해야하는지 묻고 있지만 403 코드를 다시 보내려고 시도했지만 실제로 200 코드가 반환되는 문제를 지적하는 것 같습니다. 당신은 명확히 할 수 있습니까? 후자의 경우 ColdFusion에서 처리하는 404 코드와 동일한 문제가 있습니다. –
앞으로 모든 처리를 중단하기 위해 cfheader 바로 다음에 cfabort를 사용 하시겠습니까? 나는 당신이 403을 돌려받는 것을 보증 할 것이라고 생각합니다. –
@RandyJohnson CFABORT를 추가하면 동일한 결과가 나타납니다. 그래도 고마워. –