spring security初试
spring security的作用
spring security是一款用于认证和授权的安全框架,采用AOP思想,基于servlet过滤器实现的安全框架。它提供了完善的认证机制和方法级的授权功能。
spring security的jar包介绍
- spring-security-core.jar:核心包,任何spring security的功能都需要此包
- spring-security-web.jar:web工程必备,包含过滤器和相关的web安全基础结构代码
- spring-security-config.jar:用于解析xml配置文件,用到spring security的xml配置文件就要用到此包
- spring-security-taglibs.jar:spring security提供的动态标签库,jsp页面下可用
使用
1.0、导入maven依赖
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
2.0、配置web.xml
<!-- 编写SpringSecurity的核心过滤器链 -->
<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>
3.0、创建SpringSecurity的配置文件
在resources
目录下创建spring-security.xml
文件,导入约束并进行简单的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
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">
<!--
auto-config="true": 表示自动加载spring-security的配置文件
use-expression="true": 表示使用spring的el表达式配置SpringSecurity
-->
<security:http auto-config="true" use-expressions="true">
<!-- 拦截资源 -->
<!--
pattern="/**":表示拦截所有的资源
access="hasAnyRole('ROLE_USER')":表示只有ROLE_USER角色才能访问资源
-->
<security:intercept-url pattern="/**" access="hasAnyRole('ROLE_USER')"/>
</security:http>
<!--设置Spring Security认证用户信息的来源-->
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<!--
创建了两个角色
springSecurity中的密码是加密的,如果想使用不加密的就要加上{noop}
-->
<security:user name="user" password="{noop}user" authorities="ROLE_USER"/>
<security:user name="admin" password="{noop}admin" authorities="ROLE_ADMIN"/>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
4.0、将spring-security.xml配置文件引入到applicationContext.xml中
由于项目启动后只会加载web.xml的内容,因此需要将spring-security.xml的内容引入到spring或者springMVC的配置文件中,其实在项目启动时,会同时创建两个IOC容器,一个是spring父容器,另一个是springMVC子容器,对于外界来说,是能够访问到springMVC子容器的,因此,为了安全起见,应该将spring-security.xml引入到父容器中
<import resource="classpath:spring-security.xml"/>
配置完成后启动项目就会弹出登录框