redis获取与设置用户缓存信息

redis获取与设置用户缓存信息

import java.util.List;

public class SessionData {
	private String token;
	private String appid;
	
	private int userId;
	private String userName;
	private int orgId;
	private String orgCode;
	private String orgName;
	private int orgLevel;
	private String orgDataCode;
	private String orgManageDataCode;
	private List<Resource> resourceList;
	private List<Role> roleList;
}
    @Autowired
	private CacheServiceUtil cacheService;
    @RequestMapping(value="/login")
	public AssembleJSON login(HttpServletRequest request, HttpServletResponse response){
String usercode = request.getParameter("usercode");
		String userpass = request.getParameter("userpass");
		String appid = request.getHeader("appid");
		String token = CommonUtils.getUUID();
		//获取用户信息
		AssembleJSON userByCode = frameService.findUserByCode(usercode);
		Map<String,Object> map = (Map<String, Object>) userByCode.getData();
		String password = "";
		if (map != null) {
			password = (String) map.get("userPass");
			userpass = MD5Util.MD5Encrypted(MD5Util.MD5Encrypted(userpass));
			userpass  = SHA1Util.getSha1(userpass);
		}
		if (password.equals(userpass)) {
			//设置缓存信息
			SessionData sessionData = new SessionData();
			sessionData.setAppid(appid);
			sessionData.setToken(token);
            CacheModel cacheModel = new CacheModel();
				cacheModel.setSessionCode(Constant.CACHE_SESSION_PREFIX+appid+":"+token);
				cacheModel.setData(mapper.writeValueAsString(sessionData));
				cacheModel.setExpire(60*6);
				cacheService.setSession(cacheModel);
}


public class CacheModel {
	private String sessionCode;
	private String cacheCode;
	private String data;
	private long expire;
	public CacheModel(String sessionCode, String data, long expire) {

		this.sessionCode = sessionCode;
		this.data = data;
		this.expire = expire;
	}

	public CacheModel(String sessionCode, long expire) {
		this.sessionCode = sessionCode;
		this.expire = expire;
	}

	public CacheModel() {
	}
}
	@PostMapping("/setSession")
	public boolean setSession(@RequestBody CacheModel cacheModel) {
		if(cacheModel.getExpire()>0)
			redisServiceImpl.set(cacheModel.getSessionCode(), cacheModel.getData(),cacheModel.getExpire()*60*1000,TimeUnit.MILLISECONDS);
		else
			redisServiceImpl.set(cacheModel.getSessionCode(),cacheModel.getData());

		return true;
	}

import org.springframework.data.redis.core.RedisTemplate;
@SuppressWarnings({ "rawtypes", "unchecked" })
@Service
public class RedisServiceImpl implements CacheService {

	@Autowired
	private RedisTemplate redisTemplate;
	/**
	 * 写入缓存设置时效时间
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	public boolean set(final String key, Object value, Long expireTime, TimeUnit timeUnit) {
		boolean result = false;
		try {
			ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
			operations.set(key, value);
			redisTemplate.expire(key, expireTime, timeUnit);
			result = true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
}

获取缓存中的数据

SessionData sessionData =getCurrUserData();

	 protected SessionData getCurrUserData()
	 {
		 return CacheUtil.GetSessionData(getRequest().getHeader(Constant.APPID),getRequest().getHeader(Constant.TOKEN));
	 }

	/**获取登录用户缓存信息
	 * 
	 * @param token 用户token
	 */
	public static final SessionData GetSessionData(String appid,String token)
	{
		/*ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
		HttpServletRequest req =  attributes.getRequest();
		String appid =req.getHeader(Constant.APPID);
		String token =req.getHeader(Constant.TOKEN);*/
		long expire =0; //这里需要从同一配置获取
		String getKey = Constant.CACHE_SESSION_PREFIX + appid + ":" + token;
		CacheModel cacheModel = new CacheModel();
		cacheModel.setSessionCode(getKey);
		cacheModel.setExpire(expire);
		String result =cacheServiceUtil.getSession(cacheModel);
		if(result==null){
			throw new CntenException(result, "401", "登陆超时,请重新登陆!");
		}

		SessionData sessionData = JSONObject.parseObject(result, SessionData.class);
		return sessionData;
	}

@FeignClient(name = "produ-data-cache")
public interface CacheServiceUtil {
	@GetMapping("/getSession")
	String getSession(@RequestBody CacheModel cacheModel);
}

	@PostMapping("/getSession")
	public String getSession(@RequestBody CacheModel cacheModel) {
		if (cacheModel.getExpire() > 0) {
			Object obj = redisServiceImpl.get(cacheModel.getSessionCode());
			if (obj != null) {
				redisServiceImpl.expire(cacheModel.getSessionCode(), cacheModel.getExpire() * 60 * 1000);
				return obj.toString();
			}else {
				return null;
			}

		}
		Object res = redisServiceImpl.get(cacheModel.getSessionCode());
		if (res != null) {
			return res.toString();
		}else {
			return null;
		}
	}	

public Object get(final String key) {
		Object result = null;
		ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
		result = operations.get(key);
		return result;
	}

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wespten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值