最近在学习Spring Security,于是就写了这篇Spring Security的博客来记录自己的学习中的一些总结,本文主要是一些简单的原理分析,没有涉及很深的源码分析。

1. Spring Security初体验

未引入Spring Security前请求接口情况,接口可以随意定义一个controller测试

引入Spring Security后,接口的请求情况

如果使用浏览器模拟访问更加明显,会跳到一个登录页面,效果如下:

然后输入默认的用户名和密码,默认的用户名是:user,密码是会在控制台中显示,如下:

在登录页面输入后,就可以访问接口了,访问后的效果如下

我们都知道401状态码就是表示没有权限的意思,请求被拦截了。这就是Spring Security的作用,用于服务的认证与授权,这里体现的是认证的作用了。实际运用中我们不可能通过使用默认登录页面来进行认证的。

2. Spring Security的认证阶段

2.1 登录流程

登录是每个系统的入口,经过登录校验后,后端服务才知道你是谁,你有哪些权限,所以我们来梳理一下现在在前后端分离的模式下,登录接口的常规流程,流程总结如下图:

2.2 Spring Security执行流程

Spring Security的原理其实就是一个过滤器链,内部包含了各种功能的过滤器。示例如图

图中列举的名字是Spring Security过滤器链中的重要过滤器。以下是对这些重要过滤器的说明:

  • UsernamePasswordAuthenticationFilter:负责处理在登录接口输入的用户名和密码的校验
  • ExceptionTranslationFilter:处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException,其中AccessDeniedException是授权异常,AuthenticationException是认证异常
  • FilterSecurityInterceptor:是负责权限校验的过滤器,授权和资源权限的校验

以上是完整的一个流程简介,主要分为两个阶段,认证与授权。

2.2.1 Spring Security认证流程

认证是所有请求的第一步,认证通过后,才说明该请求是一个合法的请求。Spring Security的完整认证流程如下图所示:

图中涉及的接口与类的简单描述

  • Authentication接口:它的实现类,表示当前访问系统的用户,封装了用户的相关信息
  • AuthenticationManager接口:定义认证Authentication的方法
  • UserDetailsService接口:用于加载用户特定数据的核心接口,里面定义了一个根据用户名查询用户信息的方法,loadUserByUsername。
  • UserDetails接口:提供用户的核心信息,通过UserDetailsService的loadUserByUsername查询到的用户信息需要封装成UserDetails对象返回,然后讲这些信息封装到Authentication对象中

以上是认证的逻辑与流程,Spring Security还有一个重要的功能就是授权。

2.2.2 Spring Security授权

每个用户的权限都是不一样的,在不同的用户进行访问系统时,需要对用户进行授权。在Spring Security中,使用默认的FilterSecurityInterceptor来进行权限校验。在FilterSecurityInterceptor中会从SecurityContextHolder获取其中的Authentication,然后获取用户的权限信息。然后判断用户是否拥有资源权限。所以就是需要在用户登录时,也需要查询出用户的权限信息,并将权限信息存储到Authentication对象中。

首先需要在配置类上开启注解控制权限,使用

@EnableGlobalMethodSecurity(prePostEnabled = true)

然后使用@PreAuthorize来定义接口需要使用的权限,例如:

@PreAuthorize("hasAuthority('test')")

这个就是需要test权限才可以访问资源!

Spring Security简单理解相关推荐

  1. spring security 简单理解

    一.简介 Spring Security 是 Spring 家族中的一个安全管理框架. 一般来说,常见的安全管理技术栈的组合是这样的: SSM + Shiro Spring Boot/Spring C ...

  2. SpringBoot + Spring Security 简单入门

    这篇文章主要介绍了SpringBoot + Spring Security 简单入门 Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考 ...

  3. spring security简单配置

    spring security简单配置 主要集中在5个类里面配置 1,实现UserDetailsService 2,实现AuthenticationManager 3,登录成功与失败的处理 4,访问拒 ...

  4. spring security简单教程以及实现完全前后端分离

    spring security是spring家族的一个安全框架,入门简单.对比shiro,它自带登录页面,自动完成登录操作.权限过滤时支持http方法过滤. 在新手入门使用时,只需要简单的配置,即可实 ...

  5. Spring Security简单SSO

    问题 简单使用Spring Security实现简单单点登录. 思路 引入Spring Security ,Spring Session Redis相关库,简单配置Spring Security实现对 ...

  6. 1.spring security简单的demo-适合萌新

    文章目录 1.spring security入门 1.创建项目,引入依赖 2.security的其他配置方式 2.2基于内存 2.3HttpSecurity(入门配置此文件) 2.4多个HttpSec ...

  7. Spring Security简单增加短信验证码登录

    查网上资料增加短信验证码登录都要增加一大推,要重头写Spring Security的实现,我呢,只想在原来的密码登录基础上简单实现一下短信验证码登录. 1.首先得先一个认证类,来认证验证码是否正确,这 ...

  8. Spring Security——简单第三方OAuth2登录自动配置——GitHub登录DEMO

    GitHub OAuth2 APP申请 https://github.com/settings/applications/new Maven <!--Spring Security-->& ...

  9. Spring Security简单的登陆验证授权

    Spring Security的介绍就省略了,直接记录一下登陆验证授权的过程. Spring Security的几个重要词 1.SecurityContextHolder:是安全上下文容器,可以在此得 ...

最新文章

  1. KeyWordHelper-关键字提取类(注:使用第三方组件DictSeg.dll)
  2. 设计人员珍藏的在线处理图片的网址大集合
  3. CSS3弹性伸缩布局(一)——box布局
  4. linux ida 图形界面,linux – IDA在屏幕内不起作用
  5. openfeign ribbon 负载_SpringCloud教程(三)声明式访问Feign、负载均衡Ribbon
  6. fisher线性判别算法python_Fisher线性判别(LDA)python实现
  7. vim系统配置文件,配置专属自己的环境
  8. hash-4.hashtable
  9. java Flink使用addSink方法保存流到mysql数据库中
  10. Web开发之一:Web UI技术综述
  11. bzoj 3379: [Usaco2004 Open]Turning in Homework 交作业(区间DP)
  12. 机器学习--支持向量机实战(三)完整版SMO算法实现
  13. Matlab PolySpace安装破解
  14. 使用cachecloud(redis云平台)搭建和监控redis
  15. 【房屋租赁网管理系统】
  16. 关于uniapp获取ios客户端平台安全距离(底部导航条)的方法
  17. 爬取微信朋友圈信息-可视化
  18. RK3399平台开发系列讲解(内核入门篇)1.1、通过sysfs清楚了解设备的系统状况
  19. docker (九)promethues的服务发现和grafana
  20. 71 linux usb设备驱动

热门文章

  1. 分布式ID生成器及snowflake(雪花)算法实现
  2. HTML导出WORD
  3. 2021考研英语完型易熙人
  4. Zeal离线文档下载速度慢解决方案 - 简书
  5. 【机器学习算法】关联规则-3 关联规则的指标问题和关联规则的使用方法
  6. 【前端入门】jQuery
  7. jq样式操作和效果(显示隐藏,滑入滑出,淡入淡出)
  8. java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中
  9. 计算机屏幕黑的,电脑显示器突然黑了怎么回事
  10. 鸿蒙试炼怎么玩,诛仙3鸿蒙试炼玩法介绍