2009-11-12 4 views
0

В настоящее время я работаю над проектом, мы использовали freemarker в качестве языка шаблонов. Вместо того, чтобы использовать форму Defualt входа Я создал пользовательский контроллер и вид пользовательского Freemarker, который идет вместе с этим контроллеромSpring Security Custom freemarker form

Код:

@Controller 
public class LoginController { 
private static finaal String LOGIN = "components/security/login"; 

@RequestMapping("/security/login") 
public String login(){ 

    return LOGIN; 
    } 
} 

мой шаблон FreeMarker:

HTML код:

<form action="${rc.contextPath}/j_spring_security_check" method="post"> 
    <label for="username">Username</label><input type="text" id="username" name="j_username"><br/> 
    <label for="password">Password</label><input type="text" id="password" name="j_password"><br/> 
    <input type="submit" value="Login!"> 
</form> 

мой ApplicationContext-security.xml

<http> 
    <logout/> 
     <intercept-url pattern="/*" access="ROLE_ADMIN, ROLE_GUEST"/> 
     <intercept-url pattern="/security/login" filters="none"/> 
     <form-login login-page="/security/login" /> 
    </http> 

логин работает как шарм НО, когда пользователь вводит неправильное имя пользователя или пароль, сообщения об ошибках не отображаются, и я не могу понять, как это сделать. Не могли бы вы помочь мне в этом.

ответ

6

Код для тех, кто задается вопросом, как я это сделал:

<#if Session.SPRING_SECURITY_LAST_EXCEPTION?? && Session.SPRING_SECURITY_LAST_EXCEPTION.message?has_content> 
    <@spring.message "login.bad.credentials"/> 
</#if> 
0

Вы должны установить страницу ошибки:

<http> 
    ... 
    <form-login authentication-failure-url="/loginError.jsp" default-target-url="/start.jsp" /> 
    ... 
</http> 

В loginError.jsp:

... 
Login error. Reason: <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>. 
... 
+0

Спасибо, но указать новую страницу не нужно, но ваш намек с SPRING_SECU RITY_LAST_EXCEPTION.message заставлял меня думать. спасибо – jakob

Смежные вопросы