SpringSecurity框架原理

4 篇文章 0 订阅
3 篇文章 0 订阅

1、spring-security简介

安全验证框架spring-security,是spring家族的一员,是一个重量级的安全验证框架,其自定义程度高,但是配置繁琐,配合springboot使用可大大较少配置的过程,提高开发效率。其核心功能可分为两个部分,认证和授权。

2、底层实现

spring-security本质可以理解为一个“过滤器连”,由一个个功能相互独立的过滤器组成,这些过滤器有着自己相对应的功能,每一个过滤器的执行必须在上一个过滤器放行之后,这些多个过滤器组成一个过滤链。
在这里插入图片描述

3、解析源码看过滤器执行原理以FilterSecurityInterceptor方法过滤器为例,FilterSecurityInterceptor过滤器是过滤连最底层的过滤器

(1)首先获取执行的目标对象:doFilter()方法获取对象,这是真正的执行过滤的方法。
在这里插入图片描述
(2)然后判断上一个过滤器是否放行:在调用invoke()方法执行对象时会先检查上个过滤器是否放行。
在这里插入图片描述
(3)基本执行过程可分为,获取请求对象,判断上级过滤器是否放行,执行过滤过逻辑放行。

4、过滤器加载

(1)首先配置DelegatingFilterProxy过滤器(springboot集成的话不需要手动配置,springboot框架会自配置)

5、web用户名和密码验证流程

在spring-security验证过程中框架会首先从配置文件和配置类中去找登录密码和用户名,如果在配置文件和配置类中没有找到用户名和密码的设置就去找UserDetailsService接口中设置的密码。
在这里插入图片描述

6、设置自定义的登录页面和需要放行的请求

再Security配置文件中重写configure方法:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.formLogin()    //该方法表示登录时跳转到我们自定义的登录页面
                .loginPage("login.html")    //登录页地址
                .loginProcessingUrl("/user/login")       //登录访问路径
                .defaultSuccessUrl("/test/index").permitAll()        //认证成功后跳转的路径
                .and().authorizeRequests()
                .antMatchers("/","/test/hello","/user/login").permitAll()  //设置放行的请求
                .anyRequest().authenticated()
                .and().csrf().disable();    //关闭csrf防护
    }

7、基于用户权限做访问控制

使用hasAuthority()方法实现一个用户对应一个权限,使用hasAnyAuthority(()方法可将一个访问路径分配给多个权限。
(1)在配置文件中作如下设置:
在这里插入图片描述
(2)在UserDetailsService返回的用户对象中添加权限信息:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值