Commit 4499d371 authored by yanzg's avatar yanzg

异常处理显示

parent 213a64bd
package com.yanzuoguang.token;
import com.yanzuoguang.util.vo.MapRow;
/**
* Token创建数据
*
* @author 颜佐光
*/
public class TokenData {
/**
* token标记
*/
private String token;
/**
* 数据密钥
*/
private String dataPwd;
/**
* 有效时间
*/
private long expire = Long.MAX_VALUE;
/**
* 缓存的数据
*/
private MapRow data = new MapRow();
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getDataPwd() {
return dataPwd;
}
public void setDataPwd(String dataPwd) {
this.dataPwd = dataPwd;
}
public long getExpire() {
return expire;
}
public void setExpire(long expire) {
this.expire = expire;
}
public MapRow getData() {
return data;
}
public void setData(MapRow data) {
this.data = data;
}
}
package com.yanzuoguang.token;
import com.yanzuoguang.util.base.ObjectHelper;
import com.yanzuoguang.util.cache.MemoryCache;
import com.yanzuoguang.util.helper.JsonHelper;
import com.yanzuoguang.util.helper.StringHelper;
import com.yanzuoguang.util.vo.MapRow;
/**
* 登录请求
*
* @author 颜佐光
*/
public class TokenHelper {
/**
* 内存缓存
*/
protected static MemoryCache<TokenData> cache = new MemoryCache<>();
/**
* 获取当前线程编号
*
* @return 线程编号
*/
private static String getCurrentId() {
return String.valueOf(Thread.currentThread().getId());
}
/**
* 获取当前的登录信息
*
* @param cls 需要获取的数据的类型
* @param <T> 数据类型
* @return 缓存的数据
*/
public static <T extends Object> T get(Class<T> cls) {
String id = getCurrentId();
TokenData tokenData = cache.get(id);
if (tokenData == null || tokenData.getData() == null) {
return null;
}
if (ObjectHelper.isSub(cls, tokenData.getData().getClass())) {
return (T) tokenData.getData();
} else {
String json = JsonHelper.serialize(tokenData.getData());
return JsonHelper.deserialize(json, cls);
}
}
/**
* 获取字段值
*
* @param cls 字段值类型
* @param field 字段值
* @param <T> 类型
* @return 对象
*/
public static <T extends Object> T getField(Class<T> cls, String field) {
MapRow row = get(MapRow.class);
Object value = null;
if (row.containsKey(field)) {
value = row.get(field);
}
return StringHelper.to(cls, value);
}
/**
* 缓存数据
*
* @param token 标记
* @param expire 有效期
* @param dataPwd 数据密码
* @param data 数据时间
*/
public static TokenData write(String token, String dataPwd, long expire, Object data) {
String id = getCurrentId();
TokenData tokenData = cache.get(id);
if (tokenData == null) {
tokenData = new TokenData();
cache.put(id, tokenData);
}
tokenData.setToken(token);
tokenData.setDataPwd(dataPwd);
tokenData.setExpire(expire);
if (tokenData.getData() == null) {
tokenData.setData(new MapRow());
}
ObjectHelper.writeWithFrom(tokenData.getData(), data);
return tokenData;
}
/**
* 设置登录标记字符串
*
* @param tokenString 登录标记字符串
*/
public static TokenData setTokenString(String tokenString) {
String id = getCurrentId();
TokenData tokenData = JsonHelper.deserialize(tokenString, TokenData.class);
cache.put(id, tokenData);
return tokenData;
}
/**
* 获取登录标记字符串,自动要删除数据
*
* @return 登录标记字符粗
*/
public static String getTokenString() {
String id = getCurrentId();
TokenData tokenData = cache.get(id);
return JsonHelper.serialize(tokenData);
}
/**
* 删除缓存信息
*/
public static void remove() {
String id = getCurrentId();
cache.remove(id);
}
}
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