首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Security 实战干货:SecurityContext相关的知识

今天我们来讲一下如何在接口访问检索当前认证用户信息。我们先讲一下具体的场景。通常我们在认证后访问需要认证的资源时需要获取当前认证用户的信息。比如 “查询我的个人信息”。...安全上下文 SecurityContext 不知道你有没有留意Spring Security 实战干货:使用 JWT 认证访问接口[4] 是如何实现 JWT 认证拦截器 JwtAuthenticationFilter...它提供了两个有用的方法: setContext 设置当前的 SecurityContext getContext 获取当前的 SecurityContext , 进而你可以获取到当前认证用户。...上面方法的判断是必须的,如果是匿名用户(AnonymousAuthenticationToken)返回的 Principal 类型是一个字符串 anonymousUser 。...总结 SecurityContextSpring Security 的一个非常重要类,今天不但介绍 SecurityContext 是什么、有什么作用,也对以前讲过的一些知识进行回顾。

1.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

何在Spring boot修改默认端口

何在Spring boot修改默认端口 介绍 Spring boot为应用程序提供了很多属性的默认值。但是有时候,我们需要自定义某些属性,比如:修改内嵌服务器的端口号。...: 8081 这两个文件都会在Spring boot启动的时候被加载。...如果同一个应用程序需要在不同的环境中使用不同的端口,这个时候你就需要使用到Spring Boot的profile概念,不同的profile使用不同的配置文件。...比如你在application-dev.properties: server.port=8081 在application-qa.properties : server.port=8082 在程序中指定...java -jar spring-5.jar --server.port=8083 或者这样: java -jar -Dserver.port=8083 spring-5.jar 值生效的顺序 上面我们将了这么多修改自定义端口的方式

1.6K20

了解SecurityContext

所以我们需要一个业务可以检索当前认证用户的工具。 接下来我们来看看 Spring Security 是如何解决这个痛点的。...安全上下文 SecurityContext 不知道你有没有留意Spring Security :使用 JWT 认证访问接口中是如何实现 JWT 认证拦截器 JwtAuthenticationFilter...,当服务端响应用户后又使用同一个工具类将 UsernamePasswordAuthenticationToken 从 SecurityContext clear 掉。...它提供了两个有用的方法: clearContext 清除当前的 SecurityContext getContext 获取当前的 SecurityContext setContext 设置当前的...MODE_GLOBAL其实就是所有线程共享的思路 需要提一句的是SecurityContext是非线程安全的,所以如果设置了Global,那我们就需要去关注访问并发问题。

40820

Spring Security 实战干货:如何获取当前用户信息

在某些场景我们需要获取当前的用户是谁?如果你使用了Spring Secrity作为安全框架你可以通过以下手段获取当前用户。...SecurityContext 无论是有状态的Session模式还是流行的JWT模式你都可以通过SecurityContext来获取当前的用户: Authentication authentication...(authentication instanceof AnonymousAuthenticationToken)) { String currentUserName = authentication.getName...Principal java.security.Principal对象也可以获取当前的用户信息,在Spring Security该对象表现为Authentication对象,如果我们在Spring MVC...总结 今天总结了如何在Spring Security获取当前用户的各种方法,它们的各自场景都略有不同,你可以根据这些罗列选择最适合你的应用场景。

5.9K20

Spring Security (四) 核心过滤器源码分析

4 过滤器详解 4.1 核心过滤器概述 由于过滤器链路的过滤较多,即使是Spring Security的官方文档也并未对所有的过滤器进行介绍,在之前,《Spring Security(二)--Guides...》入门指南中我们配置了一个表单登录的demo,以此为例,来看看这过程Spring Security都帮我们自动配置了哪些过滤器。...在Spring Security,虽然安全上下文信息被存储于Session,但我们在实际使用不应该直接操作Session,而应当使用SecurityContextHolder。.../请求开始时,设置安全上下文信息,这样就避免了用户直接从Session获取安全上下文信息 SecurityContextHolder.setContext(contextBeforeChainExecution...,在整个Spring Security的认证体系则扮演着至关重要的角色。

1.5K70

Spring Security(四)--核心过滤器源码分析

,即使是Spring Security的官方文档也并未对所有的过滤器进行介绍,在之前,《Spring Security(二)--Guides》入门指南中我们配置了一个表单登录的demo,以此为例,来看看这过程...在Spring Security,虽然安全上下文信息被存储于Session,但我们在实际使用不应该直接操作Session,而应当使用SecurityContextHolder。.../请求开始时,设置安全上下文信息,这样就避免了用户直接从Session获取安全上下文信息 SecurityContextHolder.setContext(contextBeforeChainExecution...,在整个Spring Security的认证体系则扮演着至关重要的角色。...AnonymousAuthenticationToken auth = new AnonymousAuthenticationToken(key, principal

1.3K80

5分钟搞懂如何在Spring BootSchedule Tasks

Spring Schedule 实现定时任务 我们只需要 SpringBoot 项目最基本的依赖即可,所以这里就不贴配置文件了。 1....创建一个 scheduled task 我们使用 @Scheduled 注解就能很方便地创建一个定时任务,下面的代码涵盖了 @Scheduled的常见用法,包括:固定速率执行、固定延迟执行、初始延迟执行...Cron 表达式: 主要用于定时作业(定时任务)系统定义执行时间或执行频率的表达式,非常厉害,你可以通过 Cron 表达式进行设置定时任务每天或者每个月什么时候执行等等操作。...启动类上加上@EnableScheduling注解 在 SpringBoot 我们只需要在启动类上加上@EnableScheduling便可以启动定时任务了。...自定义线程池执行 scheduled task 默认情况下,@Scheduled任务都在Spring创建的大小为1的默认线程池中执行,你可以通过在加了@Scheduled注解的方法里加上下面这段代码来验证

1.6K20

为什么要设计匿名用户

我们来看实际生活的一个例子,老王是一家公司的老板,他的车进地下车库是免费的,其他人进地下车库是计费的。我们来思考如何实现这个需求。...Spring Security匿名用户 Spring Security中专门设计了匿名用户,它的作用其实也是为了在保证流程一致的前提下去执行一些特殊的认证逻辑,比如程序的登录、主页的数据接口,这些未认证的用户场景需要绕过访问控制检查...匿名用户的配置 匿名用户是认证体系最后的一道认证流程,负责匿名认证的过滤器是AnonymousAuthenticationFilter,当发现请求不具备任何其它认证条件后,会生成一个AnonymousAuthenticationToken...access("IS_AUTHENTICATED_ANONYMOUSLY") .mvcMatchers("/anonymous5").anonymous() 获取匿名用户 Spring...Authentication,请改用@CurrentSecurityContext: @GetMapping("/") public String method(@CurrentSecurityContext SecurityContext

60030

何在 Spring Boot 实现在 Request 里解密参数返回的功能?

随着移动互联网和云计算技术的快速发展,越来越多的企业开始使用 Web 应用来实现业务,而 Spring Boot 作为目前比较流行的 Java Web 框架之一,则被广泛应用于 Web 应用的开发。...在实际的项目开发,我们经常需要对传递的参数进行加密,在服务端进行解密后再进行处理。本文将介绍如何在 Spring Boot 实现在 Request 里解密参数返回的功能。1....相关技术介绍2.1 Spring Boot 的 MVC 架构和请求处理机制Spring Boot 的 MVC(Model-View-Controller)架构是基于 HTTP 协议的,它会将请求发送到对应的...在 Controller ,我们可以直接从 Request 域中获取解密后的参数值。3.4 配置拦截器在实现完参数拦截器之后,我们需要将拦截器配置到 Spring Boot 。...在本例,我们对所有请求进行拦截,以确保所有传递的参数都能够进行解密操作。4. 总结本文介绍了如何在 Spring Boot 实现在 Request 里解密参数返回的功能。

97421
领券