1. 前言
欢迎阅读 Spring Security 实战干货 系列文章 。在前两篇我们讲解了 基于配置 和 基于注解 来配置访问控制。今天我们来讲一下如何在接口访问中检索当前认证用户信息。 我们先讲一下具体的场景。通常我们在认证后访问需要认证的资源时需要获取当前认证用户的信息。比如 “查询我的个人信息”。如果你直接在接口访问时显式的传入你的 UserID 肯定是不合适的。因为你认证通过后访问资源,系统是知道你是谁的。而且显式的暴露用户的检索接口也不安全。所以我们需要一个业务中可以检索当前认证用户的工具。 接下来我们来看看 Spring Security 是如何解决这个痛点的。
2. 安全上下文 SecurityContext
不知道你有没有留意
Spring Security 实战干货:使用 JWT 认证访问接口
中是如何实现
JWT
认证拦截器
JwtAuthenticationFilter
。当服务端对
JWT Token
认证通过后,会将认证用户的信息封装到
UsernamePasswordAuthenticationToken
中 并使用工具类放入安全上下文
SecurityContext
中,当服务端响应用户后又使用同一个工具类将
UsernamePasswordAuthenticationToken
从
SecurityContext
中
clear
掉。
我们来简单了解
SecurityContext
具体是个什么东西。
package org.springframework.security.core.context;
import java.io.Serializable;
import org.springframework.security.core.Authentication;
public interface SecurityContext extends