2

onrequeststart()ログインしたユーザーの属性にApplication.cfc基づいて、「禁止」/「許可されていない」リクエストをプログラムで処理する ColdFusion Web サイトがあります。たとえば (FYI:SESSION.Userは で初期化されonSessionStart()ます:

<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 を返すべきではありませんか?

4

1 に答える 1