Spring Security入门Demo如何快速搭建?

2026-06-10 01:578阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1730个文字,预计阅读时间需要7分钟。

Spring Security入门Demo如何快速搭建?

Spring Security 简介:Spring Security 是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,处理 Web 请求级别和方法调用级别的身份验证和授权。在 Spring Framework 中,Spring Security 负责身份认证和授权。


一、Spring Security简介

SpringSecurity,这是一种基于Spring AOP和Servlet过滤器的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权。在Spring Framework基础上,Spring Security充分利用了依赖注入(DI,Dependency Injection)和面向切面技术。

二、建立工程

用第二种方法创建名为spring-security-demo的Maven工程。

工程的最终目录结构为

三、源代码

1 pom.xml里引入所需要的包


<project xmlns="maven.apache.org/POM/4.0.0"xmlns:xsi="www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="maven.apache.org/POM/4.0.0maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-security-demo</groupId>
<artifactId>spring-security-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>spring-security-demo</name>
<description/>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.9.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.1.6.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.1.6.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>

</project>



2 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns="xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>spring-security-demo</display-name>
<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>

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

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

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


这里两处关于springsecurity的配置表示项目中所有路径的资源都要经过Spring Security。

Spring Security入门Demo如何快速搭建?

注意:最好是将DelegatingFilterProxy写在DispatcherServlet之前,否则Spring Security可能不会正常工作。

3 spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="www.springframework.org/schema/beans"
xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns:p="www.springframework.org/schema/p"
xsi:schemaLocation="www.springframework.org/schema/beans
www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<!-- 定义一个视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
</beans>


这个XML配置声明一个视图解析器.在控制器中会根据JSP名映射到/WEB-INF/jsp中相应的位置。


4 applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="www.springframework.org/schema/beans"
xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
xmlns:context="www.springframework.org/schema/context"
xmlns:mvc="www.springframework.org/schema/mvc"
xsi:schemaLocation="www.springframework.org/schema/beans
www.springframework.org/schema/beans/spring-beans-3.0.xsd
www.springframework.org/schema/context
www.springframework.org/schema/context/spring-context-3.0.xsd
www.springframework.org/schema/mvc
www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<!-- 激活spring的注解. -->
<context:annotation-config />

<!-- 扫描注解组件并且自动的注入spring beans中.
例如,他会扫描@Controller 和@Service下的文件.所以确保此base-package设置正确. -->
<context:component-scan base-package="com.demo" />

<!-- 配置注解驱动的Spring MVC Controller 的编程模型.注:次标签只在 Servlet MVC工作! -->
<mvc:annotation-driven />

</beans>


5 spring-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="www.springframework.org/schema/beans"
xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
xmlns:security="www.springframework.org/schema/security"
xsi:schemaLocation="www.springframework.org/schema/beans
www.springframework.org/schema/beans/spring-beans-3.0.xsd
www.springframework.org/schema/security
www.springframework.org/schema/security/spring-security-3.1.xsd">

<!-- Spring-Security 的配置 -->
<!-- 注意use-expressions=true.表示开启表达式,否则表达式将不可用.
see:www.family168.com/tutorial/springsecurity3/html/el-access.html
-->
<security:java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="www.springframework.org/tags" prefix="spring"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta localhost:8080/spring-security-demo/auth/login​​

3 输入用户名admin密码admin后,点击“Login”按纽



4 点击“Go AdminPage”链接,因为有权限,所以可看到管理员页面

5 点击“退出登录”,返回登录页

6 输入用户名user密码user并登录



7 点击Go AdminPage链接,因为没有权限,所以看到权限不够的提示

8 退出登录,返回登录页

五、源码下载地址

Github: ​​ github.com/zhenghaishu/Spring-Security-Demo​​

本文共计1730个文字,预计阅读时间需要7分钟。

Spring Security入门Demo如何快速搭建?

Spring Security 简介:Spring Security 是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,处理 Web 请求级别和方法调用级别的身份验证和授权。在 Spring Framework 中,Spring Security 负责身份认证和授权。


一、Spring Security简介

SpringSecurity,这是一种基于Spring AOP和Servlet过滤器的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权。在Spring Framework基础上,Spring Security充分利用了依赖注入(DI,Dependency Injection)和面向切面技术。

二、建立工程

用第二种方法创建名为spring-security-demo的Maven工程。

工程的最终目录结构为

三、源代码

1 pom.xml里引入所需要的包


<project xmlns="maven.apache.org/POM/4.0.0"xmlns:xsi="www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="maven.apache.org/POM/4.0.0maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-security-demo</groupId>
<artifactId>spring-security-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>spring-security-demo</name>
<description/>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.9.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.1.6.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.1.6.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>

</project>



2 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns="xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>spring-security-demo</display-name>
<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>

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

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

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


这里两处关于springsecurity的配置表示项目中所有路径的资源都要经过Spring Security。

Spring Security入门Demo如何快速搭建?

注意:最好是将DelegatingFilterProxy写在DispatcherServlet之前,否则Spring Security可能不会正常工作。

3 spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="www.springframework.org/schema/beans"
xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xmlns:p="www.springframework.org/schema/p"
xsi:schemaLocation="www.springframework.org/schema/beans
www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<!-- 定义一个视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
</beans>


这个XML配置声明一个视图解析器.在控制器中会根据JSP名映射到/WEB-INF/jsp中相应的位置。


4 applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="www.springframework.org/schema/beans"
xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
xmlns:context="www.springframework.org/schema/context"
xmlns:mvc="www.springframework.org/schema/mvc"
xsi:schemaLocation="www.springframework.org/schema/beans
www.springframework.org/schema/beans/spring-beans-3.0.xsd
www.springframework.org/schema/context
www.springframework.org/schema/context/spring-context-3.0.xsd
www.springframework.org/schema/mvc
www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<!-- 激活spring的注解. -->
<context:annotation-config />

<!-- 扫描注解组件并且自动的注入spring beans中.
例如,他会扫描@Controller 和@Service下的文件.所以确保此base-package设置正确. -->
<context:component-scan base-package="com.demo" />

<!-- 配置注解驱动的Spring MVC Controller 的编程模型.注:次标签只在 Servlet MVC工作! -->
<mvc:annotation-driven />

</beans>


5 spring-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="www.springframework.org/schema/beans"
xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
xmlns:security="www.springframework.org/schema/security"
xsi:schemaLocation="www.springframework.org/schema/beans
www.springframework.org/schema/beans/spring-beans-3.0.xsd
www.springframework.org/schema/security
www.springframework.org/schema/security/spring-security-3.1.xsd">

<!-- Spring-Security 的配置 -->
<!-- 注意use-expressions=true.表示开启表达式,否则表达式将不可用.
see:www.family168.com/tutorial/springsecurity3/html/el-access.html
-->
<security:java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="www.springframework.org/tags" prefix="spring"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta localhost:8080/spring-security-demo/auth/login​​

3 输入用户名admin密码admin后,点击“Login”按纽



4 点击“Go AdminPage”链接,因为有权限,所以可看到管理员页面

5 点击“退出登录”,返回登录页

6 输入用户名user密码user并登录



7 点击Go AdminPage链接,因为没有权限,所以看到权限不够的提示

8 退出登录,返回登录页

五、源码下载地址

Github: ​​ github.com/zhenghaishu/Spring-Security-Demo​​