news 2026/6/7 14:29:35

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/6/7 10:33:25

C++中如何安全地将C风格字符串转化为无符号整数

在C编程中&#xff0c;将C风格字符串&#xff08;cstring&#xff09;转换为无符号整数&#xff08;uint&#xff09;是一项基础但容易出错的底层操作。它直接关系到数据处理的正确性和程序的安全性&#xff0c;错误往往源于对输入数据边界和格式的忽视。理解其原理和陷阱&…

作者头像 李华
网站建设 2026/6/6 3:10:18

可解释人工智能在软件测试中的实践与展望、

可解释AI与软件测试的融合价值 随着AI技术深度渗透测试领域&#xff0c;从自动化测试脚本生成到智能缺陷预测&#xff0c;人工智能正重塑传统测试范式。然而&#xff0c;传统黑盒AI模型&#xff08;如深度神经网络&#xff09;的决策过程不透明&#xff0c;导致测试人员面临三…

作者头像 李华
网站建设 2026/6/4 20:23:12

跨越工具鸿沟:测试数据流动的挑战与机遇

理解测试数据流动的核心价值 在当今快速迭代的软件开发环境中&#xff0c;测试数据是确保产品质量的基石。然而&#xff0c;随着工具链的多样化&#xff0c;测试数据在不同平台&#xff08;如JIRA、Selenium、Postman或自定义测试框架&#xff09;之间的流动常常面临障碍。这种…

作者头像 李华
网站建设 2026/6/6 17:21:16

Linux MD5

在 Linux 系统中&#xff0c;计算 YUV 文件的 MD5 哈希值是一个常见操作&#xff0c;常用于验证文件完整性、比对编码输出一致性、自动化测试等场景。 YUV 文件是原始像素数据&#xff08;如 YUV420p、NV12 等&#xff09;&#xff0c;虽然不能直接“查看”内容&#xff0c;但可…

作者头像 李华
网站建设 2026/6/6 22:51:32

推荐一本训练大模型的书籍:从基础理论到分布式实战,一篇足够!

文章介绍了一本将于十二月出版的AI大模型新书&#xff0c;该书填补了市场上大模型实践训练资料的空白。书中不仅包含基础理论&#xff0c;还详细讲解了企业级大模型的训练方法&#xff0c;特别是分布式训练、并发处理等技术难题&#xff0c;以及如何提升训练效率和正确率。内容…

作者头像 李华
网站建设 2026/6/5 4:54:36

LeetDown:macOS平台A6/A7设备降级神器完全解析

LeetDown&#xff1a;macOS平台A6/A7设备降级神器完全解析 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 还在为老旧的iPhone 5s、iPad 4等设备无法降级而苦恼吗&#xff1f;&am…

作者头像 李华