Witam. Mam problem z wyświetlaniem komunikatu o błędnym logowaniu do systemu. Jest to aplikacja napisana w Spring z użyciem Spring Security.
Metoda w kontrolerze:
@RequestMapping("/login")
public ModelAndView getLoginForm(
@RequestParam(value="authfailed", required = false) String authfailed,
@RequestParam(value="logout", required = false) String logout,
@RequestParam(value="denied", required = false) String denied) {
ModelAndView mav = new ModelAndView();
if (authfailed != null) {
mav.addObject("authfailed", "Błędna nazwa użytkownika lub hasło");
} else if (logout != null) {
mav.addObject("logout", "Wylogowano");
} else if (denied != null) {
mav.addObject("denied", "Odmowa dostępu");
}
mav.setViewName("login");
return mav;
}
Konfiguracja Spring Security:
<security:http>
<security:intercept-url pattern="/client**"
access="ROLE_CLIENT" />
<security:intercept-url pattern="/admin**"
access="ROLE_ADMIN" />
<security:form-login login-page='/login'
username-parameter="username" password-parameter="password"
authentication-failure-url="/login?authfailed"
authentication-success-handler-ref="myAuthenticationSuccessHandler" />
<security:logout logout-success-url="/login?logout" />
</security:http>
Strona z formularzem logowania:
<#if authfailed??>
<div class="errorMessage">${authfailed}</div>
</#if>
<div id="login">
<h1>Logowanie</h1>
<form method="post" action="<@spring.url '/j_spring_security_check' />">
<input type="text" name="username" placeholder="Login" /> <input
type="password" name="password" placeholder="Hasło" /> <input
type="submit" value="Login" />
</form>
</div>
Wszystko działa, ok jak się zaloguje to przenosi mnie na odpowiednią stronę, ale kiedy wprowadzę błędne dane to fakt w adresie pojawia się adres
http://localhost:8181/ibank/login?authfailed
ale nie wyświetla się żaden komunikat. Przecież dodawany jest komunikat do zmiennej authfailed, ale nic nie jest wyświetlane. Starałem się wzorować na tym: http://www.mkyong.com/spring-security/spring-security-custom-login-form-annotation-example/ a tam wszystko działa poprawnie.