2014-09-03 119 views
0

我有一個包含電子郵件地址和密碼的登錄頁面。我如何使用spring security來進行安全登錄?我不明白該怎麼做..?在我的Web應用程序中,第一頁是帶有userEmail和Password的登錄頁面。如何在登錄表單中添加彈簧安全

這是我的jsp頁面

<form:form action="/pname/signin" modelAttribute="user" method="post" id="form" > 
    <form:input path="userEmailId" placeholder="User Name" /> 
    <form:password path="userPassword" placeholder="Password" /> 
    <a href="signin" class="anchorStyle"><input type="submit" value="signin"/> </a> 
</form:form> 

,這裏是我的彈簧security.xml文件

<http auto-config="true"> 
    <intercept-url pattern="/**" access="ROLE_ADMIN" /> 
    <logout logout-success-url="/signin?logout" /> 
</http> 

<authentication-manager> 
    <authentication-provider> 
    <user-service> 
     <user name="user" password="password" authorities="ROLE_ADMIN" /> 
    </user-service> 
    </authentication-provider> 
</authentication-manager> 

請告訴我,我的錯誤是。成功登錄後,它也應該進入hello頁面。

+0

你可以添加顯示錶單的JSP嗎? – Jeroen 2014-09-03 10:03:58

+0

@ Jeroen..i增加了它..請告訴我..我使用json爲此.. – ghhhhhhhh 2014-09-03 10:25:41

+0

你能描述什麼不工作?你到達登錄頁面嗎?嘗試進行身份驗證時是否會遇到任何異常? – Jeroen 2014-09-03 11:19:57

回答

0

This tutorial應該讓你去。從可用信息中,仍然很難找出配置中缺少的內容。本教程解釋瞭如何限制訪問除登錄頁面以外的每個頁面。它還顯示了在成功登錄後如何轉發到目標頁面。例如,見此http配置:

<http use-expressions="true"> 
    <intercept-url pattern="/login*" access="isAnonymous()" /> 
    <intercept-url pattern="/**" access="isAuthenticated()"/> 

    <form-login 
    login-page='/login.html' 
    default-target-url="/homepage.html" 
    authentication-failure-url="/login.html?error=true" /> 

    <logout logout-success-url="/login.html" /> 

</http> 
+0

我使用json ..那麼春季安全會如何知道我正確的用戶名和密碼? – ghhhhhhhh 2014-09-03 12:01:33

1

This tutorial,並且this tutorial可以幫助你。您基本上定義了在後臺檢查必要的信息,如.xml文件中的userEmail和userPassword。

之後,在你的的.jsp文件,你給的網址值j_spring_security_check匹配了您的電子郵件參數您的密碼,也授權,以查看該用戶是否具有授權打開您在Web應用程序中提供的某些頁面。

見這個例子來啓發你: 這是的.jsp視圖頁面:

<c:if test="${not empty msg}"> 
       <div class="msg">${msg}</div> 
      </c:if> 
      <form name="loginForm" action="<c:url value="/j_spring_security_check"/> " method="post"> 
       <c:if test="${not empty error}"> 
        <div class="error" style="color: #ff0000;">${error}</div> 
       </c:if> 
       <div class="form-group"> 
        <label for="userEmail">E-Posta</label> 
        <input id="userEmail" type="email" class="form-control" name="userEmail" placeholder="E-Mail Here!" required> 
       </div> 

       <div class="form-group"> 
        <label for="userPassword">Şifre</label> 
        <input id="userPassword" type="password" class="form-control" name="userPassword" placeholder="Give me your Password!" required> 
       </div> 

       <div class="form-group"> 
        <button type="submit" class="btn btn-send-message pull-right">GİRİŞ</button> 
       </div> 

       <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> 
      </form> 

這是的security.xml文件:

<security:http auto-config="true"> 
    <security:intercept-url pattern="/addPost/**" access="ROLE_USER"/> 
    <security:form-login 
     login-page="/login" 
     default-target-url="/addPost/" 
     authentication-failure-url="/login?error" 
     username-parameter="userEmail" 
     password-parameter="userPassword" /> 
    <security:logout logout-success-url="/login?logout" /> 
</security:http> 

<security:authentication-manager> 
    <security:authentication-provider> 
     <security:jdbc-user-service data-source-ref="dataSource" 
            authorities-by-username-query="SELECT userEmail, authority FROM AUTHORITIES WHERE userEmail = ?" 
            users-by-username-query="SELECT userEmail, userPassword, isActive FROM USERS WHERE userEmail = ?" 
     /> 
    </security:authentication-provider> 
</security:authentication-manager> 

至於我能從您的代碼中查看,您沒有添加任何j_spring_security_check作爲值.jsp視圖。所以你的代碼不知道去哪裏比賽的憑據。同時我也相信你應該將表單登錄添加到您的.xml文件中,以指導您的登錄過程。

希望這對你有幫助。