你好 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