Перезапись / перенаправление запроса в Coldfusion с использованием модельного клея - PullRequest
1 голос
/ 30 июня 2009

На самом деле это связано с аутентификацией. мой сценарий выглядит следующим образом: У меня есть домашняя страница, где пользователь может видеть некоторые новости и другие вещи, также есть текстовые поля для пользователя, чтобы ввести информацию для входа и войти в систему. Теперь, если пользователь не вошел в систему, я хочу ограничить его, чтобы увидеть детали новостей. и всякий раз, когда пользователь нажимает на любую ссылку, он должен получать предупреждение (вам нужно войти).

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 завершено.

Заранее

1 Ответ

0 голосов
/ 10 ноября 2009

В вашем приемнике сообщений для '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>

надеюсь, это поможет.

...