你好 Spring Security

注 1: 在開始這個例子之前,你需要一些關於 java servlet 頁面(JSP)Apache Maven 的 先驗知識。

使用現有 Web 專案啟動 Web 伺服器(如 Apache tomcat )或建立一個。

訪問 index.jsp

任何人都可以訪問該頁面,這是不安全的!

確保申請安全

  1. 更新 Maven 依賴項

將依賴項新增到 pom.xml 檔案中

pom.xml

<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-web</artifactId>
  <version>4.0.1.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-config</artifactId>
  <version>4.0.1.RELEASE</version>
</dependency>

注 1: 如果你之前沒有在專案中使用 Spring,那麼就沒有關於“spring-context”的依賴。此示例將使用帶有“spring-context”的 xml config。所以也要新增這個依賴項。

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>4.2.2.RELEASE</version>
</dependency>

注意 2: 如果你之前沒有在專案中使用 JSTL,則不依賴於此。此示例將在 jsp 頁面中使用 JSTL。所以也要新增這個依賴項。

<dependency>
  <groupId>org.glassfish.web</groupId>
  <artifactId>javax.servlet.jsp.jstl</artifactId>
  <version>1.2.1</version>
</dependency>
  1. 製作 Spring 安全配置檔案

在“WEB-INF”資料夾中建立資料夾名稱 spring 並生成 security.xml 檔案。從下一個程式碼複製並貼上。

WEB-INF /彈簧/ security.xml 檔案

<b:beans xmlns="http://www.springframework.org/schema/security"
         xmlns:b="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                             http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">

  <http />

  <user-service>
    <user name="stackoverflow" password="pwd" authorities="ROLE_USER" />
  </user-service>

</b:beans>
  1. 更新 web.xml

更新“WEB-INF”資料夾中的 web.xml

WEB-INF / web.xml 檔案

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

注意: 如果你之前沒有在專案中使用 Spring,則沒有關於 Spring 上下文載入的配置。所以也要新增這個引數和監聽器。

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    /WEB-INF/spring/*.xml
  </param-value>
</context-param>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

執行 Secure Web 應用程式

執行 Web 伺服器並訪問 ***index.jsp 後,***你將看到 spring security 生成的預設登入頁面。因為你未經過身份驗證。

https://i.stack.imgur.com/bDlCN.jpg

你可以登入

username : stackoverflow
password : pwd

注意: WEB-INF / spring / security.xml 上的使用者名稱和密碼設定 ******

顯示使用者名稱

Hello 之後新增 jstl 標籤,列印使用者名稱

index.jsp

<h1>Hello <c:out value="${pageContext.request.remoteUser}" />!!</h1>

https://i.stack.imgur.com/ZcrNM.jpg

登出

index.jsp

在“Hello 使用者名稱”之後新增表單,輸入標籤,從 spring security 提交生成的登出 url / logout

<h1>Hello <c:out value="${pageContext.request.remoteUser}" />!!</h1>

<form action="/logout" method="post">
  <input type="submit" value="Log out" />
  <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form>

成功登出後,你將再次看到自動生成的登入頁面。因為你現在沒有經過身份驗證。

https://i.stack.imgur.com/0K83h.jpg