1、如果在jsp页面中获取可以使用spring security的标签

页面引入标签

[java] view plain copyprint?
  1. <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

使用:

[java] view plain copyprint?
  1. <div> username : <sec:authentication property="name"/></div>
<div> username : <sec:authentication property="name"/></div>

即可显示当前用户。

2.java代码中使用

[java] view plain copyprint?
  1. UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication() .getPrincipal();
 UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication() .getPrincipal();

但我在实际运用中发现获得的Authentication为null。仔细看了下源代码发现,如果想用上面的代码获得当前用户,必须在spring

security过滤器执行中执行,否则在过滤链执行完时org.springframework.security.web.context.SecurityContextPersistenceFilter类会

调用SecurityContextHolder.clearContext();而把SecurityContextHolder清空,所以会得到null。    经过spring security认证后,

security会把一个SecurityContextImpl对象存储到session中,此对象中有当前用户的各种资料

[java] view plain copyprint?
  1. SecurityContextImpl securityContextImpl = (SecurityContextImpl) request
  2. .getSession().getAttribute("SPRING_SECURITY_CONTEXT");
  3. // 登录名
  4. System.out.println("Username:"
  5. + securityContextImpl.getAuthentication().getName());
  6. // 登录密码,未加密的
  7. System.out.println("Credentials:"
  8. + securityContextImpl.getAuthentication().getCredentials());
  9. WebAuthenticationDetails details = (WebAuthenticationDetails) securityContextImpl
  10. .getAuthentication().getDetails();
  11. // 获得访问地址
  12. System.out.println("RemoteAddress" + details.getRemoteAddress());
  13. // 获得sessionid
  14. System.out.println("SessionId" + details.getSessionId());
  15. // 获得当前用户所拥有的权限
  16. List<GrantedAuthority> authorities = (List<GrantedAuthority>) securityContextImpl
  17. .getAuthentication().getAuthorities();
  18. for (GrantedAuthority grantedAuthority : authorities) {
  19. System.out.println("Authority" + grantedAuthority.getAuthority());
  20. }
SecurityContextImpl securityContextImpl = (SecurityContextImpl) request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
// 登录名
System.out.println("Username:"+ securityContextImpl.getAuthentication().getName());
// 登录密码,未加密的
System.out.println("Credentials:"+ securityContextImpl.getAuthentication().getCredentials());
WebAuthenticationDetails details = (WebAuthenticationDetails) securityContextImpl.getAuthentication().getDetails();
// 获得访问地址
System.out.println("RemoteAddress" + details.getRemoteAddress());
// 获得sessionid
System.out.println("SessionId" + details.getSessionId());
// 获得当前用户所拥有的权限
List<GrantedAuthority> authorities = (List<GrantedAuthority>) securityContextImpl.getAuthentication().getAuthorities();
for (GrantedAuthority grantedAuthority : authorities) {System.out.println("Authority" + grantedAuthority.getAuthority());
}

Spring security获取当前用户相关推荐

  1. Spring Security默认的用户登录表单 页面源代码

    Spring Security默认的用户登录表单 页面源代码 <html><head><title>Login Page</title></hea ...

  2. 在spring security手动 自定义 用户认证 SecurityContextHolder

    1.Spring Security 目前支持认证一体化如下认证技术: HTTP BASIC authentication headers (一个基于IEFT  RFC 的标准) HTTP Digest ...

  3. Spring Security实现JDBC用户登录认证

    在搭建博客后端服务框架时,我采用邮件注册+Spring Security登录认证方式,结合mysql数据库,给大家展示下具体是怎么整合的. 本篇是基于上一篇:spring boot实现邮箱验证码注册 ...

  4. Spring Security——获取当前已登录用户UserDetails对象

    源代码 SecurityContextHolder.getContext().getAuthentication().getPrincipal() 对于WebSecurityConfigurer中关于 ...

  5. 微服务商城系统(十) Spring Security Oauth2 + JWT 用户认证

    文章目录 一.用户认证分析 1.认证 与 授权 2.单点登录 3.第三方账号登录 4.第三方认证 5.认证技术方案 6.Security Oauth 2.0 入门 7. 资源服务授权 (1)资源服务授 ...

  6. .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?

    前面和大家聊了 Spring Security 如何像 QQ 一样,自动踢掉已登录用户(Spring Boot + Vue 前后端分离项目,如何踢掉已登录用户?),但是前面我们是基于单体应用的,如果我 ...

  7. 用spring security设置用户jwt令牌和设置接口访问权限案例

    文章目录 1.配置Swagger 2.spring security配置 3.用户校验逻辑 注册和登录接口 dao层 service层 pojo层 4.加密验证逻辑 5.生成令牌逻辑 身份验证提供者: ...

  8. Spring Security用户认证和权限控制(默认实现)

    1 背景 实际应用系统中,为了安全起见,一般都必备用户认证(登录)和权限控制的功能,以识别用户是否合法,以及根据权限来控制用户是否能够执行某项操作. Spring Security是一个安全相关的框架 ...

  9. Spring Security登录用户数据获取(4)

    1. 登录用户数据获取   登录成功之后,在后续的业务逻辑中,开发者可能还需要获取登录成功的用户对象,如果不使用任何安全管理框架,那么可以将用户信息保存在HttpSession中,以后需要的时候直接从 ...

最新文章

  1. ASP.Net ViewState的实现
  2. java ee 分页_【JavaEE】JavaEE分页实践
  3. ztree获取勾选节点数据并且与表单信息合并
  4. 07年末围炉盛宴 - 信息工作者应用与管理系列Webcast
  5. 做技术的为什么很难发财?
  6. 性能达到原生 MySQL 七倍,华为云 Taurus 技术解读
  7. java 返回第k小的数_java – 给定n和k,返回第k个置换序列
  8. 站在“巨人”的肩膀上运维
  9. 函数 getaddrinfo 学习
  10. Activity管理类,随时随地退出应用程序
  11. 腾讯翻译君在线翻译怎么翻译整个文件_腾讯文档:在线多人协作文档工具
  12. 设置新的路由器无线网络连接服务器,路由器连接新路由器怎么设置 路由器连接新路由器设置方法【详解】...
  13. 2022质量员-土建方向-岗位技能(质量员)特种作业证考试题库及模拟考试
  14. 使用 WebSphere eXtreme Scale 处理事件流
  15. p2v之clonezilla(1)再生龙启动u盘制作
  16. ESXi6.5补丁更新
  17. 编写Windows服务程序,将Python作为Windows服务启动
  18. Comet OJ - 2019国庆欢乐赛 D1 入学考试 (简单版)
  19. Springboot学生作业管理系统毕业设计-附源码251208
  20. #个人日记-《扫黑·决战》电影观后感-20210511

热门文章

  1. 推荐一款 Java 对象映射神器
  2. Netty是个啥?简单来说就这!
  3. 因用了Insert into select语句,美女同事被开除了!
  4. 【模型评估与选择】sklearn.model_selection.KFold
  5. 研究生穿实验服满校追羊跑... 因为这是在追奔跑的毕业论文,哈哈哈!
  6. GBDT和GNN结合,结果怎么样?
  7. 清华浙大年度学生最高奖,都颁向量子物理
  8. 图神经网络(Graph Neural Networks,GNN)综述
  9. 干货:一文彻底弄懂递归如何解题
  10. python之⾯向对象-多态