news 2026/3/10 13:46:56

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/3/9 18:19:36

AgentWeb混合开发终极指南:5步实现原生与Web无缝融合

AgentWeb混合开发终极指南&#xff1a;5步实现原生与Web无缝融合 【免费下载链接】AgentWeb AgentWeb is a powerful library based on Android WebView. 项目地址: https://gitcode.com/gh_mirrors/ag/AgentWeb 在移动应用开发中&#xff0c;WebView与原生组件的割裂感…

作者头像 李华
网站建设 2026/3/10 1:08:10

新手如何挖漏洞?看这一篇足够

新手如何挖漏洞&#xff1f;看这一篇足够 新手怎么用黑客技术去挖漏洞&#xff1f;看这一篇就够了。 首先&#xff0c;你得知道真实挖漏洞到底能拿多少钱。拿补天为例&#xff0c;这上面有上万家公司在公开悬赏漏洞&#xff0c;奖金从几十到几千块不等&#xff0c;挖出来的漏洞…

作者头像 李华
网站建设 2026/3/8 17:26:27

001 PyTorch实战:手写数字识别(MNIST)从零开始

目标 理解MNIST手写数字数据集的结构和特点使用PyTorch构建一个简单的全连接神经网络掌握数据加载、模型训练、评估和保存的完整流程使用训练好的模型进行预测并可视化结果知识铺垫 2.1 MNIST数据集简介 MNIST是一个经典的手写数字识别数据集&#xff0c;包含&#xff1a; 训练…

作者头像 李华
网站建设 2026/3/5 7:46:56

5分钟搞定Python控制Android设备:py-scrcpy-client实战指南

5分钟搞定Python控制Android设备&#xff1a;py-scrcpy-client实战指南 【免费下载链接】py-scrcpy-client 项目地址: https://gitcode.com/gh_mirrors/py/py-scrcpy-client 还在为Android设备调试烦恼吗&#xff1f;想要在电脑上轻松操控手机屏幕吗&#xff1f;今天我…

作者头像 李华