放到ThreadLocal
LoginUserInfoDto 缓存登录信息的实体,我这里只放了一个手机号就够了。可以根据自己的需要修改,比如角色权限等等
package com.fox.domain.dto;
/**
* @author
* 当前登录人信息
*/
public class LoginUserInfoDto {
/**
* 当前登录人 手机号
*/
private String phone;
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
package com.fox.interceptor;
import com.fox.domain.dto.LoginUserInfoDto;
/**
* @author
* 本地线程
*/
public class LoginUserInfoThreadLocal {
private static final ThreadLocal<LoginUserInfoDto> USER_INFO = new ThreadLocal<>();
/**
* 设置登录用户信息
* @param loginUserInfoDto loginUserInfoDto
*/
public static void set(LoginUserInfoDto loginUserInfoDto) {
USER_INFO.set(loginUserInfoDto);
}
/**
* 获取登录用户信息
* @return LoginUserInfoDto
*/
public static LoginUserInfoDto get(){
return USER_INFO.get();
}
/**
* 删除登录用户信息
*/
public static void remove() {
USER_INFO.remove();
}
}
登录的时候set,需要用登录信息时候get,退出登录的时候remove(登录失败也建议调用remove)
LoginUserInfoDto userInfoDto = new LoginUserInfoDto();
userInfoDto.setPhone(phone);
LoginUserInfoThreadLocal.set(userInfoDto);
LoginUserInfoThreadLocal.get(userInfoDto);
若依框架也是采用ThreadLocal来存储用户登录信息的
1
2
3