Spring Security登陸


  本文參考或摘錄自:http://haohaoxuexi.iteye.com/blog/2154714

  在上一篇中使用Spring Security做了一些安全控制,如Spring Security 自動生成登陸頁面登陸以后便能正常使用系統。本文介紹Spring Security 自定義登陸頁面以及相關的一些處理。

  Spring Security 之form-login。

 1、使用form-login 自定義登陸頁

   2、使用form-login做登陸引導處理,即登陸成功后定向到其他頁面

   3、使用form-login 登陸失敗后處理

一、form-login 介紹:

  form-login元素是用來定義表單登錄信息,以及登陸后續處理。配置如下:

  

<security:http>
        <!--http元素下的form-login元素用來定義表單登錄信息.login-page指定用戶指定的登錄頁-->
        <!--  username-parameter:表示登錄時用戶名使用的是哪個參數,默認是“j_username”。
 password-parameter:表示登錄時密碼使用的是哪個參數,默認是“j_password”。
   login-processing-url:表示登錄時提交的地址,默認是“/j-spring-security-check”。這個只是Spring Security用來標記登錄頁面使用的提交地址,真正關於登錄這個請求是不需要用戶自己處理的。-->
         <security:form-login login-page="/login.jsp"
                              login-processing-url="/login.do"
                              username-parameter="username"
                              password-parameter="password"
                              authentication-success-handler-ref="authSuccess"  --用作登陸成功后的處理bean
 /> <!-- IS_AUTHENTICATED_ANONYMOUSLY 表示匿名用戶可以訪問,與ROLE_ANONYMOUS效果相同 --> <security:intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/> <security:intercept-url pattern="/**" access="ROLE_USER"/> </security:http>

注:<security:http security="none" pattern="/login.jsp"></security:http> 為不進行安全認證的頁面。因此以上配置與以下等效:

<security:http security="none" pattern="/login.jsp"></security:http>
    <!--http元素用於定義Web相關權限控制。-->
    <!--intercept-url定義了一個權限控制的規則。
    pattern屬性表示我們將對哪些url進行權限控制,其也可以是一個正則表達式,如上的寫法表示我們將對所有的URL進行權限控制;
    access屬性表示在請求對應的URL時需要什么權限,默認配置時它應該是一個以逗號分隔的角色列表,請求的用戶只需擁有其中的一個角色就能成功訪問對應的URL。
    這里的“ROLE_USER”表示請求的用戶應當具有ROLE_USER角色。“ROLE_”前綴是一個提示Spring使用基於角色的檢查的標記。-->
    <!--注:auto-config="true"時,SpringSecurity發現沒有登錄回自動創建登陸頁面-->
    <security:http>
        <!--http元素下的form-login元素用來定義表單登錄信息.login-page指定用戶指定的登錄頁-->
        <!--  username-parameter:表示登錄時用戶名使用的是哪個參數,默認是“j_username”。
  password-parameter:表示登錄時密碼使用的是哪個參數,默認是“j_password”。
  login-processing-url:表示登錄時提交的地址,默認是“/j-spring-security-check”。這個只是Spring Security用來標記登錄頁面使用的提交地址,真正關於登錄這個請求是不需要用戶自己處理的。-->
         <security:form-login login-page="/login.jsp"
                              login-processing-url="/login.do"
                              username-parameter="username"
                              password-parameter="password"
                              authentication-success-handler-ref="authSuccess"    --用作登陸成功后的處理bean
                               />
        <!-- IS_AUTHENTICATED_ANONYMOUSLY 表示匿名用戶可以訪問,與ROLE_ANONYMOUS效果相同 -->
        <!--<security:intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>-->
        <security:intercept-url pattern="/**" access="ROLE_USER"/>
    </security:http>

二、form-login做登陸引導處理 元素:authentication-success-handler-ref。具體配置見上配置,另外如還需使用Spring Security做登陸成功后的引導處理,還需配置如下bean.

 <bean name="authSuccess" class="com.vrv.springMvcDemo.security.AuthenticationSuccessHandlerImpl"></bean>
authSuccess 的實現類代碼如下:
package com.vrv.springMvcDemo.security;

import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/*
*
 * Created by Administrator on 2014/12/5.
*/


public class AuthenticationSuccessHandlerImpl implements AuthenticationSuccessHandler {
    @Override
    public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        response.sendRedirect("index.jsp");
    }
}

 

如果不需要Spring Security進行登陸成功引導處理,直接使用指定頁面則可使用default-target-url 進行配置。如下:

<security:form-login login-page="/login.jsp"
                              login-processing-url="/login.do"
                              username-parameter="username"
                              password-parameter="password"
                              default-target-url="/index.jsp"
                               />

三、form-login 登陸失敗后處理。配置如下:

<security:http security="none" pattern="/loginFailure.jsp"></security:http>
<security:form-login login-page="/login.jsp"
                              login-processing-url="/login.do"
                              username-parameter="username"
                              password-parameter="password"
                              default-target-url="/index.jsp"
                              authentication-failure-url="/loginFailure.jsp"
                               />

注意:此處loginFailure.jsp需配置為不需要進行安全認證,否則此頁面由於Spring Security 而不能訪問

同 AuthenticationSuccessHandler 進行登陸成功處理,登陸失敗除了可以指定authentication-failure-url之外,form-login同樣允許我們指定認證失敗后的頁面和對應認證失敗后的處理器AuthenticationFailureHandler。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM