【问题标题】:Spring Security Custom freemarker formSpring Security 自定义 freemarker 表单
【发布时间】:2010-12-15 20:51:42
【问题描述】:

我目前正在做一个项目,我们使用 freemarker 作为模板语言。 我没有使用默认登录表单,而是创建了一个自定义控制器和一个与该控制器一起使用的自定义 freemarker 视图

代码:

@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>

登录就像一个魅力但是,当用户输入错误的用户名或密码时,不会显示错误消息,我不知道该怎么做。你能帮我解决这个问题吗?

【问题讨论】:

    标签: spring-security freemarker


    【解决方案1】:

    那些想知道我是如何做到的人的代码:

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

    【讨论】:

      【解决方案2】:

      需要设置错误页面:

      <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}"/>.
      ...
      

      【讨论】:

      • 谢谢,但没有必要指定一个新页面,但是您对 SPRING_SECURITY_LAST_EXCEPTION.message 的提示让我想到了。谢谢
      猜你喜欢
      • 2017-04-07
      • 2023-03-19
      • 2023-03-06
      • 1970-01-01
      • 2016-01-10
      • 2015-11-30
      • 2018-11-26
      • 2015-12-06
      • 1970-01-01
      相关资源
      最近更新 更多