你好 Spring Security
注 1: 在開始這個例子之前,你需要一些關於 java servlet 頁面(JSP) 和 Apache Maven 的 先驗知識。
使用現有 Web 專案啟動 Web 伺服器(如 Apache tomcat )或建立一個。
訪問 index.jsp 。
任何人都可以訪問該頁面,這是不安全的!
確保申請安全
- 更新 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>
- 製作 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>
- 更新 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>
成功登出後,你將再次看到自動生成的登入頁面。因為你現在沒有經過身份驗證。