当前的用户信息这样拿:
先定义一个局部线程变量里,
然后在登录后将用户保存到该变量里面,
这样就可以在你的当前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不在同一个容器里面,所以通过线程变量去传