2015-10-15 93 views
0

我早些時候使用過spring的默認登錄表單來認證用戶。現在我正嘗試在大多數網站上的主頁上創建一個div內的登錄表單。並且action標記的值等於/login,我猜是Spring登錄身份驗證的默認URL。但我得到404 Requested resource is not available。我如何使用自定義窗體來實現春季登錄驗證?以下是我的代碼。頁面自定義使用彈性登錄認證的登錄表格

登錄表單:

 <form action="${pageContext.request.contextPath}/login" method="POST"> 
      <div class="w100" style=""></div> 
      <div class="w100 formHeading"> 
       <fmt:message key="login"></fmt:message> 
      </div> 
      <div class="w100"> 
       <label for="username">Username</label> 
       <input type="text" 
        id="username" name="username" /> 
       <label for="password">Password</label> 
       <input type="password" id="password" name="password" /> 
       <div class="w100"> 
        <button type="submit" class="btn">Log in</button> 
       </div> 
     </form> 

安全配置:

<security:http auto-config="true" use-expressions="true"> 
    <security:intercept-url pattern="/static/**" access="permitAll" /> 
    <security:intercept-url pattern="/login" access="permitAll" /> 
    <security:intercept-url pattern="/" access="permitAll" /> 
    <security:intercept-url pattern="/*" access="denyAll" /> 

    <security:form-login login-page="/login" default-target-url="/" /> 
    <security:csrf disabled="true" /> 
</security:http> 
<security:global-method-security secured-annotations="enabled"></security:global-method-security> 

回答

1

以下適用於3.xx版春季安全的(4.XX是不同的,這要歸功於@Ritesh指點它出):

處理登錄表單數據的默認URL是/j_spring_security_check(這不同於「登錄頁面「)。所以:

<form action="${pageContext.request.contextPath}/j_spring_security_check" method="POST"> 

也要注意,使用默認值,輸入字段應該被命名爲j_usernamej_password

+0

情況並非如此(至少在新版本中)。請參閱http://docs.spring.io/spring-security/site/docs/4.0.2.RELEASE/reference/htmlsingle/#jc-form。登錄URL可以與表單動作相同(獲取表單爲GET並提交爲POST),用戶名和密碼參數名稱爲默認名稱。 (但是你可能是對的,因爲目前尚不清楚哪個彈簧安全版本OP正在使用) – Ritesh

+0

@Ritesh他們在4.0.0中改變了它,我不知道,謝謝。更新了答案。 – holmis83