Spring:如何在注销时获取用户名

时间:2017-09-28 06:35:44

标签: java spring session httpsession

我有以下控制器用于注销我想获得注销用户的名称我该如何实现?

create temporary table my_temp_table as select json_object_keys('{"A": 1, "B": 0, "C": 5}'::json); 这条线不起作用

退出控制器

String userName=(String)session.getAttribute("name");

2 个答案:

答案 0 :(得分:1)

我目前附近没有任何Spring项目,但我记得有可能这样做:

SecurityContextHolder.getContext().getAuthentication().getPrincipal();

正如我所说,我不确定它是否有效。自从我上次使用Spring以来已经有一段时间了,但请告诉我它是不是。

答案 1 :(得分:0)

试试这个。

@Component
public class LogoutListener implements 
ApplicationListener<SessionDestroyedEvent> {

private static final Logger logger = 
LoggerFactory.getLogger(LogoutListener.class);

@Override
public void onApplicationEvent(SessionDestroyedEvent event) {
    List<SecurityContext> lstSecurityContext = 
event.getSecurityContexts();
    UserDetails ud;
    for (SecurityContext securityContext : lstSecurityContext)
    {
        ud = (UserDetails) 
securityContext.getAuthentication().getPrincipal();
        logger.info("Logout|Session destroyed User: [{}]", 
ud.getUsername());
    }
}
}