你好 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>
成功注销后,你将再次看到自动生成的登录页面。因为你现在没有经过身份验证。