Перезапись / перенаправление запроса в 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".

Теперь проблема заключается в том, что, когда пользователь нажимает на любую ссылку, проверка подлинности проверяется. Если аутентично (зарегистрировано), то соответствующее событие вызывается и действие выполняется. но в случае недопустимого (не вошедшего в систему), он переходит к событию "homePage", выполняет действие, но также выполняет другой запрос (например, если событие является showNews) Новости также отображаются, что я не хочу.

Может кто-нибудь сказать, как я могу остановить выполнение до того события showNews. т.е. просто событие homePage закончено.

спасибо заранее

1 ответ

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

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

Другие вопросы по тегам