码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spring Security


    文章目录

    • 1. Spring Security简介
      • 1.1 概述
      • 1.2 同款产品对比
        • 1.2.1 Spring Security
        • 1.2. Shiro
    • 2. SpringSecurity 基本原理
      • 2.1 过滤器链
      • 2.2 UserDetailsService 接口
      • 2.3 PasswordEncoder 接口

    1. Spring Security简介

    1.1 概述

    一般来说,Web应用的安全性包括用户认证( Authentication)和用户授权( Authorization)两个部分,这两点也是Spring Security重要核心功能。

    • 用户认证

    指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗点说就是系统认为用户是否能登录

    • 用户授权

    指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。通俗点讲就是系统判断用户是否有权限去做某些事情。

    1.2 同款产品对比

    1.2.1 Spring Security

    Spring Security 特点

    1. 和Spring无缝整合。
    2. 全面的权限控制
    3. 专门为Web开发而设计。
      1. 旧版本不能脱离Web环境使用。
      2. 新版本对整个框架进行了分层抽取,分成了核心模块和Web模块。单独 引入核心模块就可以脱离Web环境。
    4. 重量级。

    1.2. Shiro

    Apache旗下的轻量级权限控制框架。
    特点:

    1. 轻量级。Shiro主张的理念是把复杂的事情变简单。针对对性能有更高要求的互联网应用有更好表现。
    2. 通用性。
      1. 好处:不局限于Web环境,可以脱离Web环境使用。
      2. 缺陷∶在Web环境下一些特定的需求需要手动编写代码定制。

    2. SpringSecurity 基本原理

    2.1 过滤器链

    Spring Security 本质是一个过滤器链,有很多过滤器.
    此处列举三个

    • FilterSecurityInterceptor

    是一个方法级的权限过滤器,基本位于过滤链的最底部。

    • ExceptionTranslationFilter

    是个异常过滤器,用来处理在认证授权过程中抛出的异常

    • UsernamePasswordAuthenticationFilter

    对/login的 POST请求做拦截,校验表单中用户名,密码。

    2.2 UserDetailsService 接口

    查询数据库用户名和密码的过程

    当什么也没有配置的时候,账号和密码是由Spring Security定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。所以我们要通过自定义逻辑控制认证逻辑。

    如果需要自定义逻辑时,只需要实现UserDetailsService接口即可。

    1. 创建类继承UsernamePasswordAuthenticationFilter,重写三个方法
    2. 创建类实现UserDetailService,编写查询数据过程,返回User对象,这个User对象是安全框架提供对象

    2.3 PasswordEncoder 接口

    数据加密接口,用于返回user对象里边的密码加密

  • 相关阅读:
    【QT+QGIS跨平台编译】之六十四:【QGIS_CORE跨平台编译】—【错误处理:未定义类型QTemporaryDir - QgsSourceCache】
    常见面试题-MySQL软删除以及索引结构
    Linux Day17 生产者消费者
    基于JAVA中华二十四节气文化传承宣展平台计算机毕业设计源码+系统+数据库+lw文档+部署
    权限系统设计
    JDBC 1
    Spring AOP是什么?为什么要有Spring AOP?
    P10.2机器学习笔记--李宏毅(self-attention机制)
    比特币市场熊市中遭受重大打击的前5大加密货币
    7,vue利用axios调用后台api接口
  • 原文地址:https://blog.csdn.net/abcd741258358/article/details/126260832
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号