当前的用户信息这样拿:
先定义一个局部线程变量里,
然后在登录后将用户保存到该变量里面,
这样就可以在你的当前spring容器中可以拿了
代码大致如下:
/**
*用户信息对象
*/
public class AuthUserVO {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public AuthUserVO(){
}
public AuthUserVO(String username, String password){
this.username=username;
this.password=password;
}
}
/**
*对用户信息进行取或设置
*/
public class AuthCurrentUser {
/**
* 声明局部线程变量
*/
private static ThreadLocal<AuthUserVO> currentUser = new ThreadLocal<AuthUserVO>();
/**
* 获取当前用户喜讯你对象
* @return 当前用户喜讯你对象,IUserInfoVO类型
*/
public static AuthUserVO get() {
return (AuthUserVO) currentUser.get();
}
/**
* 设置当前用户喜讯你对象
* @param user 用户值对象
*/
public static void set(AuthUserVO user) {
currentUser.set(user);
}
}
在你的登录action里:
AuthCurrentUser.set((AuthUserVO) request.getSession().getAttribute(
SessionScope.SESSION_FLAG_USERINFO));
在你所需要想拿用户的时候:
AuthUserVO accountdo = (AuthUserVO) AuthCurrentUser.get();
因为用户登录的线程与你已初始化的spring不在同一个容器里面,所以通过线程变量去传
使用ThreadLocal管理用户会话
本文介绍了一种利用ThreadLocal实现用户会话管理的方法,通过在登录后将用户信息保存到局部线程变量中,使得Spring容器内各组件能够方便地获取当前用户的详细信息。
167万+

被折叠的 条评论
为什么被折叠?



