1

実際には認証に関連しています。私のシナリオは次のとおりです。ユーザーがニュースやその他のものを見ることができるホームページがあります。また、ユーザーがログイン情報を入力してログインするためのテキストフィールドもあります。ユーザーがログインしていない場合は、ユーザーを制限したいと思います。ニュースの詳細を表示します。また、ユーザーがいずれかのリンクをクリックすると、アラートが表示されます(ログインする必要があります)。

modelglue.xml:

<event-handler name="modelglue.OnRequestStart">
    <broadcasts>
        <message name="checkAuthentication" />
    </broadcasts>
    <results>
        <result name="invalid" do="homePage" />
    </results>
    <views />
</event-handler>

* checkAuthentication()は、ユーザーがログインしているかどうかを確認します。無効な(ログインしていない)場合は、「homePage」イベントにリダイレクトされます。

ここで問題となるのは、ユーザーがいずれかのリンクをクリックすると、認証がチェックされることです。本物の(ログインしている)場合、その対応するイベントが呼び出され、アクションが実行されます。ただし、無効な場合(ログインしていない場合)は、「homePage」イベントに移動し、アクションを実行するだけでなく、他のリクエストも実行します(たとえば、イベントがshowNewsの場合)。ニュースも表示されます。

そのshowNewsイベントの前に実行を停止する方法を誰かに教えてもらえますか?つまり、homePageイベントだけが終了します。

事前にt​​hnx

4

1 に答える 1

0

「checkAuthentication」のメッセージ リスナーでは、認証チェックを必要としないイベントのホワイトリストを追加する必要があります。次のようなことを行う必要があります(イベント名が実際にイベントオブジェクトで「EventName」と呼ばれているかどうかを確認してください)

<cfset var eventName = arguments.event.getValue("EventName") />
<cfset var whitelistedEvents = "homePage,otherPage,etc" />
<cfif UserIsUnAuthenticated AND NOT ListContainsNoCase(whitelistedEvents,eventName)>
-- do your redirect in here as this is an unauthenticated user trying to access a non-whitelisted event
</cfif>

お役に立てれば。

于 2009-11-10T09:27:00.057 に答える