2009-06-30 15 views
1

実際には認証に関連しています。私のシナリオは次のとおりです: 私は、ユーザーがいくつかのニュースとその他の情報を見ることができるホームページを持っています。また、ログイン情報を入力してログインするためのテキストフィールドがあります。 ユーザーがログインしていない場合は、彼にニュースの詳細を見るように制限する。ユーザーがリンクをクリックするたびに、アラートが表示されます(ログインする必要があります)。Modelglueを使用したColdfusionでのリクエストの上書き/リダイレクト

modelglue.xml:ユーザーがログインしているか否か

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

* checkAuthentication()をチェックします。無効(ログインしていない)の場合は、 "homePage"イベントにリダイレクトされます。

ここで、ユーザーがリンクのいずれかをクリックすると、認証がチェックされます。本物の(ログインした)場合、対応するイベントが呼び出され、アクションが実行されます。無効な(ログインしていない)場合、 "ホームページ"イベントに行き、アクションを実行しますが、他のリクエストも実行します(例えば、イベントがshowNewsの場合)。ニュースも表示されます。

誰でも、showNewsイベントの前に実行を停止する方法を教えてください。即ち、単にホームページイベントが終了する。あなたが認証チェックを必要としないイベントのホワイトリストのいくつかの並べ替えを追加することになるでしょう「checkAuthentication」のメッセージ・リスナーで事前

+0

私は、次の 試してみましたはい を<結果名=「無効」を=「ホームページ」=「true」を/リダイレクトん>それはエラー リダイレクトループ以下の私を与える: Firefoxはサーバがリダイレクトされていることを検出しました決して完了しない方法でこのアドレスを要求してください。 でも同じエラーが表示されます。 – user125736

答えて

0

のthnx。次のようなものは、それ(イベント名が実際にイベントオブジェクトの「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> 

このことができます希望を行う必要があります。

関連する問題