Имам проблем при опит да стартирам клас за автоматично влизане в Liferay CE 6.1.1, когато извършвам пренасочване от персонализиран метод на действие. Нека обясня сценариите.
Функционален сценарий 1: директно POST
действие
Да кажем, че имам публична страница A с формуляр за влизане (с потребителско име и парола), клас за автоматично влизане за извършване на някои проверки и лична страница B за показване на някои данни след правилно удостоверяване.
Имам JSP с формуляра за влизане в портлет, разположен в публична страница A, както следва (това е прекалено опростена версия):
<form method="post" action="https://localhost:4444/path/to/private/page/b">
<input id="username" type="text" />
<input id="password" type="password" />
<input type="submit" />
</form>
Когато се натисне бутонът за изпращане, класът за автоматично влизане се задейства и ако проверките са преминали, потребителят се приземява в личната страница B, както е предвидено.
Нефункционален сценарий #2: пренасочване чрез персонализирано действие
Предишният сценарий не работи в определени ситуации, при които е извършено предишно удостоверяване, така че трябва да добавя някои проверки преди да бъде изпълнено автоматичното влизане.
Мислех, че създаването на персонализирано действие, свързано с формуляра, е добра идея, затова пренаписах формуляра, както следва:
<portlet:actionUrl name="actionLogin" var="urlActionLogin" />
<form method="post" action="${urlActionLogin}">
<input id="username" type="text" />
<input id="password" type="password" />
<input type="submit" />
</form>
В основния клас на портлета, разгърнат в публична страница A, имаме нужда от метод за справяне с действието на формуляра (отново прекалено опростяване):
public void actionLogin (ActionRequest request, ActionResponse response) {
if (testsArePassed ( )) {
response.sendRedirect ("https://localhost:4444/path/to/private/page/b");
} else {
// Error page.
}
}
Като оставим настрана предаването на параметри (използвах copy-request-parameters
в portlet.xml
, за да гарантирам това), всичко, което получавам, е отново същата публична страница A, без автоматично влизане и с URL като:
Предполагам, че правя някаква концептуална грешка тук, но каква е причината, поради която автоматичното влизане не се задейства във втория сценарий, което позволява навигация до лична страница B?
Благодаря!