Commit f812088c authored by 李健华's avatar 李健华

交换token增加过期时间

parent 421551c2
......@@ -531,6 +531,7 @@ public class UserController implements IBaseController {
tokenExchange.setUserId(user.getId());
tokenExchange.setPhoneNo(user.getPhoneNo());
tokenExchange.setUuid(user.getUuid());
tokenExchange.setExpire(sessionStruct.getExpire());
return JsonResult.buildSuccessResult(null, tokenExchange);
}
......@@ -564,7 +565,7 @@ public class UserController implements IBaseController {
// 根据返回值生成token, 返回值包含user:session:token的值
sessionValue.setUser(user);
sessionValue.setLoginProperties(loginProperties);
sessionService.persistSessionExchange(token, sessionValue);
sessionService.persistSessionExchange(token, sessionValue, tokenExchange.getExpire());
}
}
......
......@@ -26,4 +26,6 @@ public class TokenExchange implements Serializable {
private String loginProperties;
private Long expire = 15 * 24 * 60 * 60L;
}
......@@ -16,6 +16,7 @@ public class SessionStruct implements Serializable {
private static final long serialVersionUID = -1L;
private String sid;
private SessionValue values;
private long expire;
public void setAttribute(String key, String value) {
if (value == null) {
......
......@@ -42,5 +42,5 @@ public interface ISessionService {
*/
void deleteSession(String token);
void persistSessionExchange(String token, SessionValue sessionValue);
void persistSessionExchange(String token, SessionValue sessionValue, long expire);
}
......@@ -287,14 +287,14 @@ public class SessionServiceImpl implements ISessionService {
}
@Override
public void persistSessionExchange(String token, SessionValue sessionValue) {
public void persistSessionExchange(String token, SessionValue sessionValue, long expire) {
Timestamp current = new Timestamp(System.currentTimeMillis());
sessionValue.setLastAccessTime(current);
String json = JSON.toJSONString(sessionValue);
stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json,
Constants.Session.SESSION_VALID_TIME, TimeUnit.SECONDS);
String key = generateLoginPropertiesKey(sessionValue.getUser().getId(), sessionValue.getLoginProperties());
stringRedisTemplate.opsForValue().set(key, token, Constants.Session.SESSION_VALID_TIME, TimeUnit.SECONDS);
stringRedisTemplate.opsForValue().set(key, token, expire, TimeUnit.SECONDS);
setUserIdTokenKeys(sessionValue.getUser().getId(), key);
}
......
......@@ -69,6 +69,7 @@ public class XyqbSessionContextHolder {
SessionStruct sessionStruct = new SessionStruct();
sessionStruct.setSid(token);
sessionStruct.setValues(values);
sessionStruct.setExpire(redisTemplate.getExpire(Constants.Session.USER_SESSION_CACHE + token));
return sessionStruct;
} catch (Exception e) {
log.warn("[XyqbSessionContextHolder][getXSessionFromRedis] 序列化SessionValue出错:sid:{},sessionValue:{}", token, result, e);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment