Перезапись / перенаправление запроса в 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>
надеюсь это поможет.