当前位置: 首页 > news >正文

jwt跨域认证

文章目录

    • jwt跨域认证
      • 简介
      • 使用
        • 加入依赖
        • 生成token

jwt跨域认证

简介

在这里插入图片描述
session认证:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Token认证
在这里插入图片描述
在这里插入图片描述
jwt 实现方案
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用

加入依赖

在这里插入图片描述

生成token

在这里插入图片描述

在这里插入图片描述
代码:

package com.example.demo.util;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;import java.util.Date;public class JwtUtil {// 7天过期private static Long expire = 604800L; // 注意这里加上了L后缀来表示这是一个长整型// 32位秘钥private static String secret = "abcdfghiabcdfghiabcdfghiabcdfghi";// 生成tokenpublic static String generateToken(String username) {Date now = new Date();Date expiration = new Date(now.getTime() + 1000 * expire);// 注意这里修正了方法名的大小写,应该是setExpiration而不是setExpiration(return Jwts.builder().setHeaderParam("type", "JWT") // 注意这里的"type"值修正为了"JWT"(根据常见的JWT标准).setSubject(username).setIssuedAt(now).setExpiration(expiration) // 这里修正了括号的使用.signWith(SignatureAlgorithm.HS512, secret).compact();}// 解析tokenpublic static Claims getClaimsByToken(String token) {return Jwts.parser().setSigningKey(secret) // 假设secret是已经定义的签名密钥.parseClaimsJws(token).getBody();}
}

在这里插入图片描述

package com.example.demo.controller;import com.example.demo.mapper.pojo.User;
import com.example.demo.mapper.pojo.UserMapper;
import com.example.demo.util.JwtUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@CrossOrigin
public class UserController {@Autowiredprivate UserMapper userMapper;//    @Operation(summary = "获取用户信息")
//    @GetMapping("/user/{id}")
//    public String getUserById(@PathVariable int id) {
//        return "根据ID获取用户";
//    }@PostMapping("/login")public String login(@RequestBody User user){System.out.println("token生产");String token = JwtUtil.generateToken(user.getName());System.out.println(token);return token;}@GetMapping("/user")public List<User> getUser() {List<User> users = userMapper.selectList(null);for(User item: users) {System.out.println("姓名:"+item.getName());System.out.println("电话:"+item.getPhone());}return users;}@PostMapping("/user")public String save(User user) {return "添加用户";}@PutMapping("/user")public String update(User user) {return "更新用户";}@DeleteMapping("/user/{id}")public String deleteById(@PathVariable int id) {return "根据ID删除用户";}
}

这里在登录接口,测试能不能返回token
在这里插入图片描述
可以返回


http://www.mrgr.cn/news/46342.html

相关文章:

  • 制造业人工智能的场景应用落地现状、难点和建议
  • Linux基础入门 --17 DAY(软件包管理)
  • 源代码泄密防护系统有哪些?这7款源代码泄密防护系统,企业管理者的福音!
  • apt update报错:ModuleNotFoundError: No module named ‘apt_pkg‘(可能是默认python版本被改坏了)
  • 【10086网上营业厅-注册/登录安全分析报告】
  • RabbitMQ延迟队列
  • 21.数据结构与算法-遍历二叉树/三种遍历算法/递归遍历/非递归遍历/建立,复制二叉树/求二叉树的深度,节点个数,叶子节点个数
  • 嵌入式仿真实验教学平台
  • 理解Web3的互操作性:不同区块链的连接
  • 鸿蒙开发(NEXT/API 12)【ArkWeb接入密码保险箱】系统安全
  • 最好的超声波清洗机是哪款牌子?四款顶流超声波清洗机强烈推荐!
  • java实现桌面程序开机自启动
  • postman变量,断言,参数化
  • sass学习笔记(1.0)
  • AI工程师:AI时代的新岗位
  • Python 语法及入门(超全超详细)!
  • 【RAG论文精读5】RAG论文综述1(2312.10997)-第3部分:检索器
  • 高效开发最佳实践全面指南
  • 智能矿山建设方案
  • inBuilder低代码平台新特性推荐-第二十五期