关于token时效性

提问 未结 3 109
kaysen
kaysen 2019-11-13
悬赏:20积分
版本:renren-security 开发环境:
前后端交互的token,在用户还在操作的过程中,发起请求,发现token失效。有没有办法防止这类问题的发生;前后端需要对token如何处理; 万分感谢!!!
回帖
  • public class SysUserTokenServiceImpl extends BaseServiceImpl<SysUserTokenDao, SysUserTokenEntity> implements SysUserTokenService { /** * 12小时后过期 */ private final static int EXPIRE = 3600 * 12; @Override public Result createToken(Long userId) { //用户token String token; //当前时间 Date now = new Date(); //过期时间 Date expireTime = new Date(now.getTime() + EXPIRE * 1000); //判断是否生成过token SysUserTokenEntity tokenEntity = baseDao.getByUserId(userId); if(tokenEntity == null){ //生成一个token token = TokenGenerator.generateValue(); tokenEntity = new SysUserTokenEntity(); tokenEntity.setUserId(userId); tokenEntity.setToken(token); tokenEntity.setUpdateDate(now); tokenEntity.setExpireDate(expireTime); //保存token this.insert(tokenEntity); }else{ //判断token是否过期 if(tokenEntity.getExpireDate().getTime() < System.currentTimeMillis()){ //token过期,重新生成token token = TokenGenerator.generateValue(); }else { token = tokenEntity.getToken(); } tokenEntity.setToken(token); tokenEntity.setUpdateDate(now); tokenEntity.setExpireDate(expireTime); //更新token this.updateById(tokenEntity); } Map<String, Object> map = new HashMap<>(2); map.put(Constant.TOKEN_HEADER, token); map.put("expire", EXPIRE); return new Result().ok(map); } @Override public void logout(Long userId) { //生成一个token String token = TokenGenerator.generateValue(); //修改token baseDao.updateToken(userId, token); } }
    0 回复
  • 楼上的代码 修改有效期 Date expireTime = new Date(now.getTime() + EXPIRE * 9999999);
    0 回复
  • /** * 12小时后过期 */ private final static int EXPIRE = 3600 * 12; 这个也加长
    0 回复