Day49(19)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management

news/2025/11/28 20:01:11/文章来源:https://www.cnblogs.com/David0919/p/19284039

登录设置

image-20251128135124345

image-20251128143640985

HTTP:无状态响应:本次响应不携带上一次响应内容

image-20251128144110139

image-20251128144715786

image-20251128151521020

image-20251128151618478

image-20251128153128208

image-20251128153153061

image-20251128153429284

image-20251128153527031

image-20251128153458955

JWT令牌

image-20251128165409248

image-20251128165500065

老版本

package com.itheima;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;import java.util.Date;
import java.util.HashMap;public class JwtTest {/*** 生成JWT令牌旧版本*/@Testpublic void testGenerateJwt(){HashMap<String, Object> dataMap = new HashMap<>();dataMap.put("id",1);dataMap.put("username","admin");String jwt = Jwts.builder().signWith(SignatureAlgorithm.HS256, "aXRoZWltYQ==")//指定加密算法和密钥.addClaims(dataMap)//添加自定义信息.setExpiration(new Date(System.currentTimeMillis() + 60 * 1000))//设置过期时间.compact();//生成令牌System.out.println(jwt);}/***解析JWT令牌*/@Testpublic void testParseJWT(){String token = "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTc2NDMyMjE2NH0.AlOIPixvMm1I9oMyl8bkaVTITrtvKpICIoH-xZGZbC0";Claims claims = Jwts.parser().setSigningKey("aXRoZWltYQ==")//指定密钥.parseClaimsJws(token)//解析令牌.getBody();//获取自定义信息System.out.println(claims);}
}

image-20251128174124636

image-20251128174306864

package com.itheima;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;import java.util.Date;
import java.util.HashMap;public class JwtTest {
//    /**
//     * 生成JWT令牌旧版本
//     */
//    @Test
//    public void testGenerateJwt(){
//        HashMap<String, Object> dataMap = new HashMap<>();
//        dataMap.put("id",1);
//        dataMap.put("username","admin");
//
//        String jwt = Jwts.builder().signWith(SignatureAlgorithm.HS256, "aXRoZWltYQ==")//指定加密算法和密钥
//                .addClaims(dataMap)//添加自定义信息
//                .setExpiration(new Date(System.currentTimeMillis() + 60 * 1000))//设置过期时间
//                .compact();//生成令牌
//        System.out.println(jwt);
//    }
//    /**
//     *解析JWT令牌
//     */
//    @Test
//    public void testParseJWT(){
//        String token = "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTc2NDMyMjE2NH0.AlOIPixvMm1I9oMyl8bkaVTITrtvKpICIoH-xZGZbC0";
//        Claims claims = Jwts.parser().setSigningKey("aXRoZWltYQ==")//指定密钥
//                .parseClaimsJws(token)//解析令牌
//                .getBody();//获取自定义信息
//        System.out.println(claims);
//    }
}
package com.itheima;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.JwtParserBuilder;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;
import org.junit.jupiter.api.Test;
import io.jsonwebtoken.Jwts;import javax.crypto.SecretKey;
import java.security.Key;
import java.util.Date;
import java.util.HashMap;public class JwtNewTest {// 1. 复制必要的常量和辅助方法:abcdefghijklmnopqrstuvwxyz0123456789private static final String SECRET_KEY = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5";private static SecretKey getSigningKey() {byte[] keyBytes = Decoders.BASE64.decode(SECRET_KEY);return Keys.hmacShaKeyFor(keyBytes);}/*** 生成JWT令牌新版本*/@Testpublic void testGenerateJwt(){HashMap<String, Object> map = new HashMap<>();map.put("id",1);map.put("username","admin");String jwt = Jwts.builder().signWith(getSigningKey())//密钥:新版的需要.claims(map)//自定义信息.expiration(new Date(System.currentTimeMillis() + 3600 * 1000)).compact();System.out.println(jwt);}@Testpublic void testParseJWT(){String token = "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTc2NDMyODA0OH0.-P0YM86RPP7hTyPQ8ULO8Y-yedAbubi94G8Xs0JKcUA";Claims claims = Jwts.parser().verifyWith(getSigningKey()).build().parseSignedClaims(token)//返回 Jwt<Claims> 对象,封装了JWT令牌的完整结构.getPayload();//提取实际数据的关键步骤System.out.println(claims);}
}
package com.itheima.utils;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.io.Decoder;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;import javax.crypto.SecretKey;
import java.security.Key;
import java.util.Date;
import java.util.Map;import static org.yaml.snakeyaml.tokens.Token.ID.Key;public class JwtUtils {private static final String SECRET_KEY = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5";private static final long EXPIPRATION = 7*24*60*60*1000;//7天public static SecretKey getSigningKey(){byte[] decode = Decoders.BASE64.decode(SECRET_KEY);return Keys.hmacShaKeyFor(decode);}/*** 生成JWT令牌* @param map* @return*/public static String generateKey(Map<String,Object>map){return Jwts.builder().signWith(getSigningKey()).claims(map).expiration(new Date(System.currentTimeMillis()+EXPIPRATION)).compact();}/*** 解析令牌* @param token* @return*/public static Claims parseToken(String token) throws Exception{return Jwts.parser().verifyWith(getSigningKey()).build().parseSignedClaims(token).getPayload();}
}

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

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

相关文章

Azure DevOps Server 2022.2 补丁(Patch 7)

Azure DevOps Server 2022.2 补丁(Patch 7)Azure DevOps Server RC版本在持续改进中,但是不影响上一个大版本的修复补丁进度;今天,微软又按照管理发布了月度补丁:Azure DevOps Server 2022.2 补丁(Patch 7),补…

U636462 无根树

noip 前一天锻炼手感。 设 \(f_i\) 为 \(i\) 到终点的答案。 那么每次转移 \(u\) 这个点的时候,令其出点 \(v\) 的贡献为 \(w + f_v\),那么敌人一定会选择最小的 \(d\) 个点办掉,此时你的答案一定为第 \(d + 1\) 小…

人工智能:用Gemini3一分钟生成手势控制3D粒子交互系统

@目录前言一、Gemini3 Build界面准备二、精准提示词设计(核心步骤)提示词设计逻辑解析:三、效果演示(生成后功能实测)1. 手势控制粒子缩放与扩散2. 多模型切换功能3. 颜色自定义功能4. 简洁现代的界面与全屏控制预…

酶蛋白定向进化难题?泰克生物酵母展示服务,高效筛选“高活性酶”突变体

在工业催化、生物制药、酶制剂研发领域,天然酶往往存在活性不足、稳定性差、特异性低等局限,难以满足实际应用需求。而酶的定向进化是解决这一问题的核心技术 —— 通过构建突变文库、筛选高活性突变体,让酶的性能实…

2025年免费简历模板排行榜:媲美付费版的优质选择

全球经济格局持续演变,求职市场呈现出新的挑战与机遇。在这样的背景下,简历不再仅仅是个人信息的罗列,更是求职者专业能力、个人品牌以及与岗位匹配度的综合体现。然而,对于预算有限的求职者而言,如何免费获得媲美…

考场备忘录

策略相关 核心思想是先保证一等,然后冲 300,有可能就冲击队线。 先看题,确保理解题意的情况下可以进行若干时间思考,但是要 15min 内看完所有题目。A、B 有多快写多快,最坏要控制在 10 点前写完。如果真的 1.5h 还…

软件测试:基本概念二

无文档情况下的测试 这是一个非常现实且常见的问题。在很多中小企业或敏捷团队中,正式的需求文档(PRD)确实可能缺失或不完善。但这并不意味着测试无法进行,反而对测试人员提出了更高的要求——从“需求验证者”转变…

docker 复制远程镜像本地并创建容器

#!/bin/bash # 简化版Docker镜像迁移脚本 # xx.sh root@127.0.0.1 xxx:latest containername set -e#if [ $# -ne 3 ]; then # echo "用法: $0 <远程主机> <镜像名> <容器名>" # ec…

上两个GPT写的锁,一个是文件锁,一个是Redis锁,写的那是相当的完美

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 简易文件锁(多进程通用)- 基于 fcntl.flock(POSIX 系统:Linux / macOS) - 支持超时等待、轮询间隔 - 支持 with 上下文管理 ""&qu…

DP动态规划进阶

摘自其他小组的总结Part 0 引言 dp(Dynamic Programming,动态规划),如何理解?动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 ——OI-Wiki感性理解,你有一个问题,输入一个数 \(n…

笔记本电脑外接显示器偶尔不亮

我的笔记本电脑通过一条雷电4转dp1.4的线连接了一个显示器,显示设置为只在这个外接显示器上显示。 最近Windows11系统更新之后,电脑开机,有时候外接显示器不能接收到信号源,无法正常亮起,笔记本本身的屏幕会正常亮…

11月27号

今天上午数据结构上机,还有跆拳道体育课

小马算力助力”欧陆词典翻译引擎“

ai-api 小马算力助力“欧陆词典翻译引擎“ 1 打开欧陆词典 1.1 欧陆词典-自定义大模型引擎 打开欧陆词典-自定义大模型引擎1.2 进入页面如下,2 设置api 推荐使用小马算力第三方,量大管饱。(大模型可以用我这个第三方…

2025-11-27-模拟赛

难受啊,怎么让我 3h 还是比我搞 100pts??? 考试中 T1 很贪心啊,然后写写写,过不了大样例?哦,好像知道正解了,写写写,不知道哪里错了,但是确实就是正解思路! T2 最后 1h 开的,看到这个数据范围:\(n \le 2…

软件测试:基础概念一

软件测试的定义和分类 一、软件测试的定义 软件测试的定义可以从不同角度理解,但核心思想是一致的。 1. 经典定义: 软件测试是使用人工或自动化的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定…

11月28号

今天上午没课,下午形势与政策

了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数

在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函…

2025全年套管、绝缘套管、热收缩套管、热缩套管、热缩管厂家综合推荐与选购指南

摘要 随着新能源、智能制造等行业的快速发展,热收缩套管作为重要的绝缘保护材料,在2025年迎来更广阔的应用前景。本文基于行业发展趋势和用户实际需求,整理了五家值得关注的热收缩套管品牌(排名不分先后),重点推…

Java 并发编程的演进与实践:从线程到虚拟线程的新时代

在所有主流编程语言中,Java 的并发模型可以说是发展最完整、体系最严谨的一类。从早期的 Thread、Synchronized,到后来的 java.util.concurrent、Fork/Join,再到 Java 21 正式引入的虚拟线程(Virtual Threads),J…

MySQL的IFNULL()、ISNULL()、NULLIF()函数用法说明

1、IFNULL() 函数 MySQL IFNULL 函数是 MySQL 控制流函数之一。 它有两个参数,第一个参数不为 NULL 时返回。 否则,IFNULL 函数返回第二个参数。 这两个参数可以是文字值或表达式。IFNULL(expression1,expression2);…