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"/>

配置完成后启动项目就会弹出登录框

posted @ 2020-04-23 15:32  Jin同学  阅读(133)  评论(0)    收藏  举报