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

Spring Security - 02 SecurityContextHolder 获取用户信息

@toc 环境 操作系统: Windows 10 x64 集成开发环境: Spring Tool Suite 4 Version: 4.12.1.RELEASE Build Id: 202110260750...浏览器(客户端): Google Chrome 版本 97.0.4692.71(正式版本) (64 位) 项目结构 参考:Spring Security - 01 新建项目 [在这里插入图片描述]...新建 HelloController 控制器类,我们可以通过 SecurityContextHolder 获取用户信息(第 17 ~ 19 行): package com.mk.controller;...import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext...Security 会先要求我们登录,登录成功之后就可以看到服务器返回用户的信息: [在这里插入图片描述] 参考 Spring Security - 01 新建项目 Spring Security /

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

Spring Security入门案例

如果我们不希望使用默认的用户密码,可以配置文件中指定一个,如此Spring Security就会使用我们指定的,而不会使用默认的了。...spring.security.user.name=zhangxun spring.security.user.password=123123 三、自定义认证逻辑 当我们开启自定义认证逻辑后,上面的默认用户和配置文件用户就不生效了...五、注销登录 因为我们使用的是Spring Security内置的登录页面,各个资源返回的也是json字符串,并非页面,所以如何实现注销登录是个问题。...以上是关于Spring Security的基本使用方法,使用数据库及其它特性将会在后面的文章予以说明。 七、会话管理 以上例子,认证和授权都是Spring Security自动进行的。...但是有的时候我们需要管理会话,比如从会话获取用户姓名、用户的权限信息;会话策略选择以及会话超时设置等。

1.2K84

Spring Security

如果我们不希望使用默认的用户密码,可以配置文件中指定一个,如此Spring Security就会使用我们指定的,而不会使用默认的了。...spring.security.user.name=zhangxun spring.security.user.password=123123 三、自定义认证逻辑 当我们开启自定义认证逻辑后,上面的默认用户和配置文件用户就不生效了...五、注销登录 因为我们使用的是Spring Security内置的登录页面,各个资源返回的也是json字符串,并非页面,所以如何实现注销登录是个问题。...以上是关于Spring Security的基本使用方法,使用数据库及其它特性将会在后面的文章予以说明。 七、会话管理 以上例子,认证和授权都是Spring Security自动进行的。...但是有的时候我们需要管理会话,比如从会话获取用户姓名、用户的权限信息;会话策略选择以及会话超时设置等。

2K00

Apache NiFi的JWT身份验证

秘钥存储的对比 最初的NiFi JWT实现将生成的对称密钥存储在位于文件系统上的H2数据库数据库表为每个用户建立一条记录,这条记录将生成的UUID与用户标识符关联起来。...NiFi 1.10.0发布更新后,注销用户界面删除用户当前的对称密钥,有效地撤销了当前令牌,并强制在后续登录生成一个新的UUID。...同时NiFi使用可配置的秘钥更新周期来查找和删除过期的失效记录。 令牌失效有两种,一种是令牌过期,一种是用户发起注销引起的令牌撤销。...浏览器Local Storage应用程序重新启动持续存在,如果用户没有完成NiFi注销过程的情况下关闭浏览器,令牌将保持持久性,并可用于未来的浏览器会话。...与会话cookie类似,浏览器关闭Session Storage删除项目。此策略依赖于存储最小数量的信息,且使用寿命较短,从而避免了与令牌本身相关的安全问题和潜在的持久性问题。

3.9K20

Spring Security ,我就想从子线程获取用户登录信息,怎么办?

大家知道 Spring Security 想要获取登录用户信息,不能在子线程获取,只能在当前线程获取,其中一个重要的原因就是 SecurityContextHolder 默认将用户信息保存在 ThreadLocal...final String MODE_GLOBAL = "MODE_GLOBAL"; ... ... } 第二种存储策略 MODE_INHERITABLETHREADLOCAL 就支持子线程获取当前登录用户信息...这个问题搞懂了,就理解了为什么 Spring Security ,只要我们稍加配置,就可以子线程获取到当前登录用户信息。...SecurityContextHolder 通过 System.getProperty 来获取默认的数据存储策略,所以我们可以项目启动通过修改系统变量进而修改 SecurityContextHolder...修改完成后,再次启动项目,就可以子线程获取到登录用户数据了,至于原理,就是前面所讲的。

4.4K30

单点登录与授权登录业务指南

用户系统1点击注销按钮。 系统1发起注销请求至SSO认证中心:系统1使用用户会话ID来识别用户,并将这个信息作为注销请求发送到SSO认证中心。...SSO认证中心处理注销请求:SSO认证中心验证系统1收到的令牌。一旦验证通过,它将销毁与用户相关的全局会话。...建立局部会话:一旦令牌验证通过,sso-client为用户子系统建立局部会话。 处理注销请求:当用户子系统请求注销,sso-client会将注销请求发送到sso-server。...添加依赖: pom.xml添加Spring Security和OAuth2依赖。...注意事项 安全性:在生产环境,请使用HTTPS来确保数据传输的安全性。 数据存储:实际应用,你应该将用户信息存储在数据库,并且应用加密措施来保护用户数据。

62421

Spring Security 之防漏洞攻击

CSRF 和会话超时 通常,预期的CSRF令牌存储会话。这意味着一旦会话到期,服务器将找不到预期的CSRF令牌并拒绝HTTP请求。...以下是一些解决办法: 减少超时的最佳方法是表单提交使用JavaScript请求CSRF令牌。然后使用CSRF令牌更新表单并提交。 另一种选择是使用一些JavaScript,让用户知道会话即将到期。...用户可以单击按钮继续并刷新会话。 最后,预期的CSRF令牌可以存储cookie。这允许预期的CSRF令牌会话结束后继续使用。...如果默认值不满足您的需要,您可以轻松地从这些默认值删除、修改或添加标题。...Cache Control Spring Security的默认设置是禁用缓存。如果用户通过身份验证查看敏感信息然后注销,我们不希望恶意用户能够单击后退按钮查看敏感信息。

2.2K20

Spring Boot 整合SpringSecurity

看文档实现 三、其他功能实现 0x01 注销 授权部分代码添加 //注销 http.logout().logoutSuccessUrl("/"); //指定注销成功后跳转的页面 调用logout()...点击按钮后会调转到默认的logout页面,点击确认后跳转到主页 0x02 整合Thymeleaf 需求如下: 实现用户登录显示注销按钮,未登录显示登录按钮 登录后显示用户用户名和权限信息 实现根据用户的权限信息显示指定的...: 实现用户登录显示注销按钮,未登录显示登录按钮 登录后显示用户用户名和权限信息 定位到标签,修改子标签内容如下 <!...登录成功后我们可以看到 spring security会自动返回一个cookie值到我们的浏览器当中,实现用户会话信息的保存。...0x04 一些问题 如果登陆后注销出现403错误,spring security配置添加 http.csrf().disable() 来关闭csrf验证即可解决

1.3K10

Spring Security 常见过滤器梳理

本文将深入介绍Spring Security中一些关键过滤器的功能及其安全体系的角色。...一 引言 Spring Security的过滤器链遵循Servlet规范,通过应用启动注册一系列的过滤器来拦截HTTP请求,每个过滤器都有明确的职责,共同构建起一套完整的安全防护体系。...它尝试会话或请求恢复已有的SecurityContext,并在请求结束将其存回。这是维持用户认证状态的关键组件。 2....LogoutFilter 功能:处理用户注销请求,如/logout URL。它会清除用户会话信息、安全上下文以及可能的Remember-Me cookie,确保用户完全退出系统。 3....随着Spring Security的不断演进,更多高级安全特性被引入,使得它成为现代Web应用安全架构不可或缺的一部分。

10410

SpringSecurity6 | 核心过滤器

当你Spring Security配置中加入 DisableEncodeUrlFilter ,它将会在过滤器链起作用,禁止Spring Security对URL进行编码。...用户注销是指用户主动终止当前会话并退出登录状态的操作,而 LogoutFilter 负责在用户发起注销请求执行相应的处理逻辑。...典型的 Spring Security 配置,LogoutFilter 通常作为过滤器链的最后一个过滤器,以确保在请求处理结束后能够正确处理用户注销请求。...// ...其他配置 } 在这个配置,我们通过 .logout() 方法配置了注销相关的信息,包括注销 URL、注销成功后的跳转页面、自定义的注销处理器、是否使当前会话失效以及需要删除的 Cookie...AnonymousAuthenticationFilter Spring Security 扮演着为匿名用户创建身份信息的重要角色,通过它的配置可以有效管理匿名用户系统的操作和权限,从而提高系统的安全性和用户体验

40431

springboot 整合 springSecurity 和shiro

因此,应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程。 2、市面上存在比较有名的:Shiro,Spring Security !...这个概念是通用的,而不是只Spring Security 存在。...auth.jdbcAuthentication()数据库找数据 //我们没有写数据库 所以内存拿 下面是内存拿的 auth.inMemoryAuthentication() .withUser...如果点击注销,则会删除这个cookie,具体的原理我们JavaWeb阶段都讲过了,这里就不在多说了!...或者细粒度的验证某个用户对某个资源是否具有某个权限 Session Management:会话管理,即用户登录后就是一次会话没有退出之前,它的所有信息都在会话会话可以是普通JavaSE环境,也可以是

98330

Shiro和SpringSecurity用起来太繁琐,推荐一个好用的权限认证框架

权限认证的方式有很多,传统上Java体系可以用shiro或者spring security,如果是非常简单的项目也可以自己写一个拦截器,后端生成token,然后用户登录的时候redis取出对比,但是这几种方式都有不如意的地方...realm可以理解为一个连接层,shiro会通过一个或多个realm查找获取用户权限,realm需要自己配置。...在用户登陆、注销、被踢下线等关键性操作进行一些AOP操作 开箱即用 —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用 因为用的人不少,所以安全性还是能得到一定保证的...,如果是前后端分离的场景,用spring security和shiro并不是很方便,推荐大家尝试一下satoken,就个人的使用感受来说, api简单,基本都是一两行代码搞定,以登录认证为例: // 登录写入当前会话的账号...总结 如果是非spring项目,使用shiro; 如果是spring项目,使用spring security和satoken,但是由于spring security现在用的比较多,所以我的建议是2个都要学

3.5K20

深入理解JWT的使用场景和优劣

jwt,这样可以防止 XSS 攻击和 CSRF 攻击(对这两种攻击感兴趣的童鞋可以看下 spring security 对他们的介绍CSRF,XSS) 你要是正在使用 jwt 访问一个接口,这个时候你的同事跑过来把你的...这样可以有效的避免一些注销和修改密码遇到的窘境。 注销和修改密码 传统的 session+cookie 方案用户点击注销,服务端清空 session 即可,因为状态保存在服务端。...没有存储起来,所以即使客户端删除了 jwt,但是该 jwt 还是在有效期内,只不过处于一个游离状态。分析下痛点:注销变得复杂的原因在于 jwt 的无状态。...仅仅清空客户端的 cookie,这样用户访问就不会携带 jwt,服务端就认为用户需要重新登录。这是一个典型的假注销,对于用户表现出退出的行为,实际上这个时候携带对应的 jwt 依旧可以访问系统。...使用 redis 记录独立的过期时间 实际上我的项目中由于历史遗留问题,就是使用 jwt 来做登录和会话管理的,为了解决续签问题,我们 redis 单独会每个 jwt 设置了过期时间,每次访问刷新

3.1K80

认证鉴权与API权限控制微服务架构的设计与实现(一)

3.1 认证与鉴权 对于第一个需求,笔者调查了一些实现方案: 分布式 Session方案 分布式会话方案原理主要是将关于用户认证的信息存储共享存储,且通常由用户会话作为 key 来实现的简单分布式哈希映射...当用户访问微服务用户数据可以共享存储获取。某些场景下,这种方案很不错,用户登录状态是不透明的。同时也是一个高可用且可扩展的解决方案。...性能较好,因为验证 Token 不用再去访问数据库或者远程服务进行权限校验,自然可以提升不少性能。 现在很多应用都是同时面向移动端和web端, OAuth2Token机制可以支持移动设备。...response也是展示了相应的token的基本信息。...总结 本文是《认证鉴权与API权限控制微服务架构的设计与实现》系列文章的总述,遇到的问题着手,介绍了项目的背景。通过调研现有的技术,并结合当前项目的实际,确定了技术选型。

3.1K60

Spring Security太复杂?试试这个轻量、强大、优雅的权限认证框架!

各位程序猿小伙伴们,中秋快乐~节日欢快的气氛中大家是不是还在奋笔疾书、沉浸在学习的海洋呢?...可能光说不够直观,小编带你看下他的登录认证: // 登录写入当前会话的账号id StpUtil.login(10001); // 然后需要校验登录处调用以下方法: // 如果当前会话未登录,这句代码会抛出...是的,相对于前文提到的Shiro、Spring Security, Sa-Token就是如此的简单便捷,更加适合当今时代的潮流与效率至上。...return "用户增加"; } 又例如账号登出: 将某个账号踢下线(待到对方再次访问系统时会抛出NotLoginException异常) // 使账号id为 10001 的会话强制注销登录 StpUtil.logoutByLoginId...在用户登陆、注销、被踢下线等关键性操作进行一些AOP操作 开箱即用 —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用 功能结构 项目目录结构:

1.2K30

【SpringSecurity系列(二十三)】手把手教你入门 Spring Boot + CAS 单点登录

《深入浅出Spring Security》一书已由清华大学出版社正式出版发行,感兴趣的小伙伴戳这里->->>深入浅出Spring Security,一本书学会 Spring Security。...微服务以及分布式系统,单点登录变得越来越普遍,松哥之前也有两篇文章和大家介绍过单点登录的方案: OAuth2+JWT 方案 @EnableOAuth2Sso 注解方案 这两种方案,JWT 存在一个注销登录的问题...现在我们 Spring Cloud Security 中使用 OAuth2+JWT 或者使用 @EnableOAuth2Sso 注解比以前要方便很多了,松哥也是最近才把项目切换到 Spring Cloud...ST:ST 全称是 Service Ticket,这是 CAS Sever 通过 TGT 给用户发放的一张票据,用户访问其他服务,发现没有 Cookie 或者 ST ,那么就会 302 到 CAS...整个登录过程,浏览器分别和 CAS Server、应用1、应用2 建立了会话,其中,和 CAS Server 建立的会话称之为全局会话,和应用1、应用2 建立的会话称之为局部会话;一旦局部会话成功建立

2.8K40

JWT-JSON Web令牌的深入介绍

使用JWT的Spring Security概述: [按体系结构使用了 MySQL,Spring Security示例的Spring Boot JWT Auth[(https://bezkoder.com.../spring-boot-jwt-mysql-spring-security-architecture/) 内容 基于会话的身份验证和基于令牌的身份验证 JWT是如何工作的 如何创建JWT 标头 有效载荷...首先,我们来看看过去流行的网站使用的一种简单方法:基于会话的身份验证。 ? 在上图中,当用户登录网站,服务器将为该用户生成一个会话并将其存储(在内存或数据库)。...服务器还会为客户端返回一个SessionId,以将其保存在浏览器Cookie。 服务器上的会话具有到期时间。在此时间之后,该会话已过期,用户必须重新登录才能创建另一个会话。...服务器如何客户端验证JWT 在上一节,我们使用Secret字符串创建签名。 此Secret字符串对于每个应用都是唯一的,并且必须安全地存储服务器端。

2.3K30
领券