java使用 Base64 实现用户信息的加密与解密,相当于token

目录

  • 1 问题
  • 2 实现

1 问题

springboot 项目需要实现对用户的加密和解密

用户登陆之后,对用户信息进行加密存到cookie ,之后访问页面的时候,携带这个cokkie 到其他的页面,然后进行解密,只要cookie 过期,那么页面就访问不了

2 实现

1 实体类
用户信息的实体类

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 加密解密的工具类

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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/126415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迅镭激光董事长颜章健荣膺“2023年如皋市科技强企人物”!

10月28日,2023如皋科技人才洽谈会开幕式在如皋隆重举行。江苏省科学技术厅副厅长、党组成员蒋洪,江苏省商务厅副厅长、党组成员孙津,中共南通市委副书记、政法委书记沈雷,中共如皋市市委书记何益军,中共如皋市委副书记…

目标检测与图像识别分类的区别?

目标检测与图像识别分类的区别 目标检测和图像识别分类是计算机视觉领域中两个重要的任务,它们在处理图像数据时有一些区别。 目标检测是指在图像中定位和识别多个目标的过程。其主要目标是确定图像中每个目标的边界框位置以及对应的类别标签。目标检测任务通常涉…

avi怎么转mp4?

avi怎么转mp4?如今市面上涌现了各种多样的视频格式,其中AVI作为一种音频视频交错格式,虽然使用较少但相对常见。它的优点在于占用空间较小,但画面质量并不是很出色。然而,AVI格式也存在一个明显的缺点,即兼…

Java实现Hive UDF详细步骤 (Hive 3.x版本,IDEA开发)

这里写目录标题 前言1. 新建项目2.配置maven依赖3.编写代码4.打jar包5.上传服务器6.代码中引用 前言 老版本编写UDF时,需要继承 org.apache.hadoop.hive.ql.exec.UDF类,然后直接实现evaluate()方法即可。 由于公司hive版本比较高(3.x&#x…

软件工程:小组开发过程技术(VS VSS UNIX C++)

(注:这个东西是2007年写的,算是个缅怀,或是个吐槽。所有注都是本次发布新加的。) 简介 本文讲述完全没有软件工程经验的软件小组如何借助VS VSS等工具为UNIX开发C程序,实现在小组规模的初级开发过程。这不…

【EI会议征稿】第七届先进算法与控制工程国际学术会议(ICAACE 2024)

第七届先进算法与控制工程国际学术会议(ICAACE 2024) 2024 7th International Conference on Advanced Algorithms and Control Engineering 第七届先进算法与控制工程国际学术会议(ICAACE 2024)定于2024年1月26-28日在中国上海…

Android Framework 常见解决方案(24)去除 Android正在启动/Android is Starting 弹窗,直接进入Launcher

1 原理说明 开机以后,设备会有一个“android正在启动”这样的弹框,这个界面是一个叫FallbackHome的Activity来展示的。FallbackHome机制是Android系统启动过程中的一种降级处理机制。当系统启动时,如果默认的Launcher应用无法正常加载或出现…

HD.047 | 水文数据——全球植被数据集[V: VCI]

写在前面 植被作为影响联系土壤、大气、水分等地气要素的重要因素,其准确估算不仅对研究植被动态变化、植被物候过程具有重要意义,而且对于流域生态水文等方面具有十分重要的应用价值。目前已有大量全球植被数据产品,本期选取植被条件指数Vegetation Condition Index(VCI)…

这三种方法轻松实现Excel文档名翻译

在电脑使用中,我们常常需要批量修改文件名并翻译。这时候,我们可以使用“固乔文件管家”软件来轻松实现这一需求。下面就介绍三种方法,帮助你轻松实现Excel文档名翻译。 方法一:使用“固乔文件管家”软件批量修改文件名 1.安装并打…

云原生安全日志审计

记得添加,把配置文件挂载进去 - mountPath: /etc/kubernetes/auditname: audit-policyreadOnly: true.....- hostPath:path: /etc/kubernetes/audit/type: DirectoryOrCreatename: audit-policy/etc/kubernetes/manifests/kube-apiserver.yaml 具体配置文件如下 a…

Paper reading: segment anything in high quality NIPS2023

最近发展起来的SAM模型,表示分割模型的一个大的跃进,尤其是在零样本的能力和灵活提升方面。尽管利用1.1bollion的mask,SAM在掩码预测方面已经存在很大的问题,尤其是目标有着复杂结构的时候。 我们提出一个HA-SAM。 设计学习一个…

C# 如何使用 System.Text.Json 启用不区分大小写的属性名称

本文将介绍如何使用 System.Text.Json 命名空间启用不区分大小写的属性名称匹配。 不区分大小写的属性匹配 默认情况下,反序列化会查找 JSON 与目标对象属性之间区分大小写的属性名称匹配。 若要更改该行为,请将 JsonSerializerOptions.PropertyNameCa…

MySQL 基础学习笔记(二)

目录 1 约束1.1 约束概述1.2 非空约束1.3 唯一约束1.4 主键约束1.5 默认约束1.6 外键约束 2 数据库设计2.1 数据库设计概述2.2 表关系 3 多表查询3.1 多表查询概述3.2 内连接查询3.3 外连接查询3.4 子查询 4 事务4.1 事务概述4.2 四大特征 1 约束 1.1 约束概述 约束是作用于表…

【算法|滑动窗口No.4】leetcode 485.最大连续 1 的个数 487.最大连续 1 的个数 II 1004. 最大连续1的个数 III

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

Feign的Retryer接口

Feign的Retryer接口 Feign的Retryer接口是用于重试失败请求的接口。当使用Feign进行远程调用时,可能会出现网络故障或服务器错误等问题导致请求失败。此时,可以通过Retryer接口实现自动重试机制,让请求重新发送,直到成功或达到最…

@Autowired和@Inject注解的区别和使用场景

在Spring框架中,Autowired和Inject注解都是用于依赖注入的常用注解。然而,它们在用法和功能上存在一些区别。本文将详细介绍这两个注解的区别和使用场景,并通过示例代码进行演示。 一、Autowired和Inject的区别 注解来源 Autowired是Sprin…

股票价格预测 | 融合CNN和Transformer以提升股票趋势预测准确度

一 本文摘要 股票价格往往很难预测,因为我们很难准确建模数据点之间的短期和长期时间关系。卷积神经网络(CNN)擅长找出用于建模短期关系的局部模式。然而,由于其有限的观察范围,CNN无法捕捉到长期关系。相比之下,Transformer可以学习全局上下文和长期关系。本文提出了一…

arcgis图上添加发光效果!

看完本文, 你可以不借助外部图片素材, 让你的图纸符号表达出你想要的光! 我们以之前的某个项目图纸为例,来介绍下让符号发光的技术! 第一步—底图整理 准备好栅格影像底图、行政边界的矢量数据,确保“数据合适、位置正确、边界吻合”。 确定好图纸的大小、出图比例、投…

《TCP/IP详解 卷一:协议》第5章的IPv4数据报的IHL字段解释

首先说明一下,这里并不解释整个IPv4数据报各个字段的含义,仅仅针对IHL字段作解释。 我们先看下IPv4数据报格式 对于IHL字段, 《TCP/IP详解 卷一:协议》这么解释: IPv4数据报。头部大小可变,4位的IHL字段…

怎么让小程序排名靠前?小程序搜索排名问题

小程序的排名是十分重要的,因为这会直接影响到用户的点击率,用户在搜索小程序时,会看到搜索引擎的前几条搜索结果,如果您的小程序不在这些位置上,很可能就会被忽略,所以,想要让用户能够看到您的…