SpringSecurity

认证

会话

用户认证通过后,为了避免用户的每次操作都进行认证可将用户的信息保证在会话中,会话就是系统为了解决认证之后,在进行常规操作是防止再次认证。常见方式有session ,token

session

用户认证成功后,在服务端生成用户相关的数据保存在session中,发送给客户端的session_id存放到cookie中,这样用户客户端请求时带上session_id就可以验证服务端是否存在session数据,已完成用户的合法校验,

token

用户认证成功后,服务端生成token,客户端可以放到cookie或者localStorage等存储中,每次请求带上token

两者区别:session只能放到cookie中,并且服务端要存储tsession,token可以存到客户端自定义的地方,并且不要求服务端进行存储,通过算法校验

授权

通过指定角色分配权限

RBAC

如何实现授权,业界通常基于RBAC完成授权

基于角色的访问控制

比如总经理级角色可以进行查询公司
在这里插入图片描述

基于资源的访问控制

比如用户必须具有查询工资的权限才能查询员工工资信息
在这里插入图片描述
优点:系统设计是定义好工资权限标识,即使查询工资所需要的角色变化为总经理和部门经理也不需要修改授权代码,系统可扩展性强

入门案例

所用依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

SpringSecurity基本原理

过滤器加载

本质是一个过滤链
项目已启动加载过滤器

FilterSecurityInterceptor 方法级别的过滤器
ExceptionTranslationFilter 异常过滤器,用于处理认证授权过程中抛出的异常
UsernamePasswordAuthenticationFilter 用户密码过滤器

如何加载过滤器?

DelegatingFilterProxy在这里插入图片描述

重要接口

UserDetailService

当什么也没配置的时候,security 自动生成账户密码, 而实际项目中账户和密码都是从数据库中查询出来的。所以我们要通过自定义逻辑控制认证逻辑。
如果需要自定义逻辑时,需要两步:

  1. 继承UsernamePasswordAuthenticationFilter,重写认证,认证成功,认证失败方法。
  2. 实现UserDetailsService接口,编写查询数据库过程,返回User对象,这个User对象是安全框架提供的对象

PasswordEncoder

PasswordEncoder 对密码进行加密
BcryptPasswordEncoder 是安全框架官方推荐的密码解析器

设置登录的用户名和密码

1.配置文件设置
在这里插入图片描述
2. 配置类设置
实现类
3.自定义编写实现类
实现实现UserDetailsService接口

标题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值