news 2026/4/18 6:30:39

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/4/18 3:44:46

动态规划(五)算法设计与分析 国科大

序列对齐序列对齐问题是一个经常用到的问题。大部分的拼写工具都会进行拼写校验来纠正拼写错误&#xff0c;例如图中工具将错误单词&#xff08;呈现为 “O-CURRANCE”&#xff09;与正确单词 “OCCURRENCE” 进行对齐&#xff0c;其中竖线 “|” 代表对应位置的字符完全匹配。…

作者头像 李华
网站建设 2026/4/17 4:26:12

揭秘图像伪造检测技术:从技术小白到防骗高手的实战指南

你是否曾经在网上看到一张令人震惊的图片&#xff0c;却不知道它是真是假&#xff1f;&#x1f914; 在这个数字信息泛滥的时代&#xff0c;图像伪造检测技术正成为每个人的必备技能。今天&#xff0c;让我们一起来探索这个神秘而强大的技术世界&#xff01; 【免费下载链接】F…

作者头像 李华
网站建设 2026/4/13 22:23:55

蓝绿部署的智能验证:测试从业者的实践指南

在当今快速迭代的软件开发环境中&#xff0c;蓝绿部署已成为一种主流的发布策略&#xff0c;它通过维护两个独立的环境&#xff08;蓝色和绿色&#xff09;来最小化部署风险。然而&#xff0c;部署的成功不仅取决于流程本身&#xff0c;更依赖于部署后的验证环节。智能验证作为…

作者头像 李华
网站建设 2026/4/16 19:14:34

工具链的语义互操作性:提升软件测试效率的关键

在当今快速迭代的软件开发环境中&#xff0c;工具链已成为测试从业者日常工作的核心组成部分。从需求管理工具&#xff08;如Jira&#xff09;到自动化测试框架&#xff08;如Selenium&#xff09;&#xff0c;再到持续集成平台&#xff08;如Jenkins&#xff09;&#xff0c;这…

作者头像 李华
网站建设 2026/4/17 0:19:54

创新macOS视频播放体验:重新定义你的观影方式

创新macOS视频播放体验&#xff1a;重新定义你的观影方式 【免费下载链接】iina 项目地址: https://gitcode.com/gh_mirrors/iin/iina 还在为macOS平台找不到理想的视频播放器而苦恼吗&#xff1f;传统播放器要么功能简陋&#xff0c;要么操作复杂&#xff0c;让观影体…

作者头像 李华
网站建设 2026/4/18 5:34:25

DevOps中的测试自动化文化:构建高效软件交付的文化基石

在当今快速迭代的软件开发环境中&#xff0c;DevOps理念已经深入人心&#xff0c;它将开发&#xff08;Development&#xff09;和运维&#xff08;Operations&#xff09;紧密结合&#xff0c;旨在通过自动化和协作加速软件交付。而测试自动化文化作为DevOps的核心组成部分&am…

作者头像 李华