• SpringSecurity


    认证

    会话

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

    session

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

    token

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

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

    授权

    作用:认证通过后,校验用户是否有权限进行访问资源或者功能,拥有权限它允许访问,没有权限不能访问,授权可以可以简单一理解为 who对what进行how操作,包括如下:

    • who: 用户
    • what: 分为功能资源(发红包),数据权限()
    • how :删除,添加…

    通过指定角色分配权限

    RBAC

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

    基于角色的访问控制

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

    基于资源的访问控制

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

    入门案例

    SpringSecurity基本原理

    过滤器加载

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

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

    如何加载过滤器?

    DelegatingFilterProxy在这里插入图片描述

    重要接口

    UserDetailService

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

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

    PasswordEncoder

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

    设置登录的用户名和密码

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

    标题

  • 相关阅读:
    IPWorks 2022 Python Edition Crack
    爬虫批量下载科研论文(SciHub)
    c++的发展史以及如何学习
    2023年5月CSDN客服月报|解决5个重大问题和18个次要问题,采纳1个用户建议,处理2个用户需求
    【Java 进阶篇】Java HTTP 请求消息详解
    【JAVA】Request&Response
    web3.0、比特币、区块链、元宇宙,以及那些待收割的韭菜们!
    Python运维脚本:提高工作效率
    C++学习记录3
    别人做跨境电商都月入过万了,真这么好做吗?
  • 原文地址:https://blog.csdn.net/qq_41199502/article/details/125091266