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();
}
-