news 2026/2/15 4:06:09

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/2/5 2:24:41

正则表达式中双引号的匹配方法及转义规则详解

正则表达式在文本处理中扮演着重要角色&#xff0c;而如何处理包含双引号的文本&#xff0c;是一个常见且棘手的问题。直接匹配或替换带引号的字符串容易出错&#xff0c;需要理解正则表达式中引号的转义规则与应用场景。 正则表达式如何匹配双引号本身 要匹配一个纯粹的双引…

作者头像 李华
网站建设 2026/2/12 2:25:00

索引_≠_检索!RAG高手都在用的六种知识表示方法!

文章介绍了RAG系统的6种核心索引策略&#xff1a;块索引、子块索引、查询索引、摘要索引、分层索引和混合索引。强调索引与检索是不同概念&#xff0c;索引关乎知识表示方式&#xff0c;检索关乎模型可见的知识范围。成功RAG系统需根据数据类型和问题选择合适索引策略&#xff…

作者头像 李华
网站建设 2026/2/14 21:28:13

AI提示词工程完全指南(超详细)从入门到精通,一篇搞定!建议收藏!

提示词工程是用户与大模型交互的核心技术&#xff0c;通过设计和优化输入提示词释放大模型潜力。文章介绍了ICIO框架、链式思维等结构化方法&#xff0c;以及指示、上下文、例子、输入和输出五大核心要素&#xff0c;强调了明确性、简洁性和结构化的重要性&#xff0c;帮助开发…

作者头像 李华
网站建设 2026/2/12 10:54:40

PrusaSlicer功能模块深度解析:从算法优化到实战应用

PrusaSlicer作为专业的3D打印切片软件&#xff0c;其强大的功能体系建立在多个精心设计的模块之上。无论你是刚接触3D打印的新手&#xff0c;还是寻求性能突破的资深玩家&#xff0c;理解这些核心模块都将大幅提升你的打印质量与效率。&#x1f3af; 【免费下载链接】PrusaSlic…

作者头像 李华
网站建设 2026/2/13 11:30:31

使用ApiFox做简单的接口并发压力测试

文章转载链接&#xff1a;http://www.51testing.com/html/38/n-7803538.htmlhttp://www.51testing.com/html/38/n-7803538.html 1.新建测试场景 2.编辑测试步骤 3.查看测试结果 查看请求的详细信息 更多详细信息 4.数据库验证 笔者测试目的主要是想验证该接口在并发压力下是否会…

作者头像 李华
网站建设 2026/2/14 23:36:35

Java爬虫1688详情api接口实战解析

下面给出一份可直接落地的「Java 版 1688 商品详情 API 爬虫」完整示例&#xff0c;覆盖签名算法、HTTP 调用、JSON 解析、异常重试、频率控制等关键要点&#xff0c;复制即可运行。 &#xff08;注&#xff1a;1688 接口需企业认证并申请 AppKey / AppSecret&#xff0c;以下代…

作者头像 李华