Security登录成功后session域获取用户信息
-
标签获取用户名
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
<security:authentication property="principal.username"/>
-
使用标签需要导约束
-
表达式获取
${sessionScope.SPRING_SECURITY_CONTEXT.authentication.principal.username}
-
java代码获取
@RequestMapping("/showUsername") public void showUsername(HttpServletRequest request) { //获得session对象 HttpSession session = request.getSession(); //取出session域中所有属性名 Enumeration attributeNames = session.getAttributeNames(); while (attributeNames.hasMoreElements()) { System.out.println(attributeNames.nextElement()); } //SPRING_SECURITY_CONTEXT Object spring_security_context = session.getAttribute("SPRING_SECURITY_CONTEXT"); System.out.println(spring_security_context); SecurityContext securityContext = (SecurityContext) spring_security_context; //获得认证信息 Authentication authentication = securityContext.getAuthentication(); //获得用户详情 Object principal = authentication.getPrincipal(); User user = (User) principal; String username = user.getUsername(); System.out.println(username); //第二种方法 //获取上下栈 SecurityContext context = SecurityContextHolder.getContext(); Authentication authentication1 = context.getAuthentication(); User user1 = (User) authentication1.getPrincipal(); String username1 = user1.getUsername(); }