1 问题
springboot 项目需要实现对用户的加密和解密
用户登陆之后,对用户信息进行加密存到cookie ,之后访问页面的时候,携带这个cokkie 到其他的页面,然后进行解密,只要cookie 过期,那么页面就访问不了
2 实现
1 实体类 用户信息的实体类
代码语言:javascript复制import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@ApiModel
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class UserToken {
/**
* sessionID 用来判断是否过期
*/
private String sessionId;
/**
* 用户id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 账号
*/
private String account;
/**
* 密码
*/
private String password;
/**
* 用户名
*/
private String username;
/**
* 角色编号
*/
private Integer roleIndex;
/**
* 角色名
*/
private String roleName;
/**
* 组织机构id
*/
private Long orgId;
/**
* 组织机构名
*/
private String orgName;
/**
* 组织机构树
*/
private String orgTree;
public UserToken(String account, String password) {
this.account = account;
this.password = password;
}
public String toJsonString() {
return JSONObject.toJSONString(this);
}
}
2 加密解密的工具类
代码语言:javascript复制package cn.hongt.cmacast.server.config.token;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/**
* @ClassName: TokenTool
* @Description:
* @Author: jing
*
*/
public class TokenTool {
//加密的字符串,相当于签名
private static final String SINGNATURE_TOKEN = "PIESAT_TOKEN";
/**
* 将用户信息加密
* */
public static String encoder(String userInfo) {
if (StringUtils.isEmpty(userInfo)) {
return null;
}
//获取编码器
Base64.Encoder encoder = Base64.getEncoder();
String singnatureBase64 = encoder.encodeToString(SINGNATURE_TOKEN.getBytes(StandardCharsets.UTF_8));
String s = encoder.encodeToString(userInfo.getBytes());
return singnatureBase64 s;
}
/**
* 根据Token获取用户信息 解码字符串
*
* @param token
* @return
*/
public static String decoder(String token) {
if (StringUtils.