news 2026/9/3 0:33:53

Authentication对象

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Authentication对象

Authentication对象是身份认证体系中的核心对象,主要用于封装用户的身份信息、认证状态、权限凭证等核心数据,是判断 “当前访问者是谁、是否合法、拥有哪些权限” 的核心载体。

  1. 封装认证核心信息

    • 「谁」在访问系统?(用户唯一标识,如用户名、用户 ID)

    • 「凭什么」访问?(凭证,如密码、Token、证书、第三方授权码)

    • 「能做什么」?(权限 / 角色,如ROLE_ADMINPERMISSION_EDIT

  2. 标识认证状态

区分 “已认证” 和 “未认证”:

  • 未认证:isAuthenticated() == false(如游客访问);

  • 已认证:isAuthenticated() == true(如登录后的用户)。

作为权限控制的依据

框架或业务代码通过Authentication对象获取用户权限,判断是否允许访问某个接口 / 资源(如hasRole('ADMIN')本质是校验该对象中的权限集合)。

贯穿认证流程

从 “用户提交凭证” 到 “认证通过”,Authentication是流程的核心传递对象:

  • 认证前:构建「未认证」的Authentication(如封装用户名 + 密码);

  • 认证中:认证管理器(AuthenticationManager)校验凭证,通过后生成「已认证」的Authentication

  • 认证后:存储在安全上下文(SecurityContext)中,供全链路(控制器、服务层、过滤器)获取。

常见实现类

不同认证场景对应不同的Authentication实现:

实现类适用场景
UsernamePasswordAuthenticationToken用户名 + 密码登录(最常用)
JwtAuthenticationToken(扩展)JWT Token 认证
OAuth2AuthenticationTokenOAuth2 第三方登录(如微信、GitHub)
AnonymousAuthenticationToken匿名用户(未登录访问)
  • 获取当前登录用户的Authentication

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
  • 获取用户名

String userName = authentication.getName();
  • 获取用户权限

Collection<? extends GrantedAuthority> authorities = authentication.getAuthenorites();
  • 获取用户详情

UserDetails userDetails = (UserDetails)authentication.getPrincipal();

自定义认证的时候

  • 构建未认证的对象(封装用户的账号密码)

Authentication unauthenticated = new UsernamePasswordAuthenticationToken(username,password);
  • 交给认证管理器校验,返回已认证的authentication

Authentication authenticated = authenticationManager.authenticate(unauthenticated);
  • 存入安全上下文,完成登录

SecurityContextHolder.getContext().setAuthentication(authenticated);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 17:49:34

My Mind 思维导图:5个简单步骤打造高效知识管理系统

My Mind 思维导图&#xff1a;5个简单步骤打造高效知识管理系统 【免费下载链接】my-mind Online Mindmapping Software 项目地址: https://gitcode.com/gh_mirrors/my/my-mind 在现代信息过载的时代&#xff0c;My Mind 思维导图软件为你提供了一站式的知识整理解决方案…

作者头像 李华
网站建设 2026/9/2 7:13:24

9.Python3集合(set)增删改查和推导式

今天我们来总结python常用数据类型&#xff0c;集合的基本操作&#xff1a;增删改查 目录 一、集合&#xff08;set&#xff09; 集合的三大特点&#xff1a; 创建集合的两种方式&#xff1a; 增加元素 删除元素 查询元素 集合运算&#xff08;超实用&#xff09; 二、…

作者头像 李华
网站建设 2026/9/3 1:31:15

当展厅互动装置 “苏醒”,光影与机械共谱2025深圳河北上海新篇

当你在展厅中迈出一步&#xff0c;面前的装置随之“苏醒”——机械臂开始舞动&#xff0c;光影随你流转&#xff0c;沉默的展品突然开始讲述。这不再是未来构想&#xff0c;而是互动机械装置为展厅带来的当下革命。它正将展览从“请勿触摸”的静态观看&#xff0c;彻底转变为一…

作者头像 李华
网站建设 2026/9/1 11:57:49

NTFS到Btrfs无损转换终极指南:快速安全完成文件系统升级

NTFS到Btrfs无损转换终极指南&#xff1a;快速安全完成文件系统升级 【免费下载链接】ntfs2btrfs 项目地址: https://gitcode.com/gh_mirrors/nt/ntfs2btrfs 对于从Windows转向Linux的用户来说&#xff0c;NTFS到Btrfs的文件系统转换是一个关键步骤。ntfs2btrfs项目提供…

作者头像 李华
网站建设 2026/9/1 23:09:26

测试面试常见问题与回答策略深度解析

一、核心能力考察类问题 1. "请介绍一个你发现过的复杂Bug" 回答框架&#xff1a;情境(STAR原则)技术细节解决价值 示例回答&#xff1a; "在电商项目支付模块测试中&#xff0c;我发现一个订单金额四舍五入导致的资金损失漏洞。当用户购买298.5元商品使用满2…

作者头像 李华
网站建设 2026/9/2 22:29:14

敏捷测试中的迭代质量保障:从过程到文化的全面演进

当测试遇上敏捷在快速迭代的敏捷开发浪潮中&#xff0c;软件测试正经历着从"阶段检查者"到"质量共建者"的角色蜕变。传统的瀑布模型将测试置于开发周期的末端&#xff0c;而敏捷测试则要求质量保障活动深度嵌入每一个迭代周期&#xff0c;形成持续反馈的质…

作者头像 李华