• JWT登录认证(2认证)


    备注说明:

            用户登录成功后,系统会自动下发JWT令牌,然后在后续的每次请求中,浏览器都需要在请求头header中携带到服务器,请求头的名称为Authorization,值为登录时下发的JWT令牌。

            如果检测到用户未登录,则http相应状态码为401

    JwtUtil

    1. package com.lin.springboot01.utils;
    2. import com.auth0.jwt.JWT;
    3. import com.auth0.jwt.algorithms.Algorithm;
    4. import java.util.Date;
    5. import java.util.Map;
    6. public class JwtUtil {
    7. private static final String KEY = "liner2332";
    8. //接受业务数据,生成token并返回
    9. public static String genToken(Map claims) {
    10. return JWT.create()
    11. .withClaim("claims",claims)
    12. .withExpiresAt(new Date(System.currentTimeMillis()+1000*60*60*12))
    13. .sign(Algorithm.HMAC256(KEY));
    14. }
    15. //接收token,验证token,并返回业务数据
    16. public static Map parseToken(String token){
    17. return JWT.require(Algorithm.HMAC256(KEY))
    18. .build()
    19. .verify(token)
    20. .getClaim("claims")
    21. .asMap();
    22. }
    23. }

     ArticleController

    1. package com.lin.springboot01.controller;
    2. import com.lin.springboot01.pojo.Result;
    3. import com.lin.springboot01.utils.JwtUtil;
    4. import jakarta.servlet.http.HttpServletResponse;
    5. import org.springframework.web.bind.annotation.GetMapping;
    6. import org.springframework.web.bind.annotation.RequestHeader;
    7. import org.springframework.web.bind.annotation.RequestMapping;
    8. import org.springframework.web.bind.annotation.RestController;
    9. import java.util.Map;
    10. @RestController
    11. @RequestMapping("/article")
    12. public class ArticleController {
    13. @GetMapping("/list")
    14. public Result list(@RequestHeader(name = "Authorization") String token, HttpServletResponse response){
    15. //验证token
    16. try {
    17. Map claims = JwtUtil.parseToken(token); //parseToken是JwtUtil工具类里定义的解析token的方法
    18. return Result.success("可以展示数据");
    19. } catch (Exception e) {
    20. response.setStatus(401);
    21. return Result.error("未登录");
    22. }
    23. }
    24. }

    先用注册登录接口,拿到用户token。

    再把data中的token数据,拿到list接口放到请求头Autorization中进行验证

  • 相关阅读:
    shell编程----sed grep awk
    cannot allocate memory in static TLS block
    肠道病毒组识别早产儿坏死性小肠结肠炎发病前的特异性病毒特征
    NeuralProphet之七:NeuralProphet + Optuna
    百家宴焕新上市,持续深耕100-300元价位段
    ps -xu | grep这个命令的用途
    Vue笔记3(计算属性,监视属性,绑定样式)
    JS的事件介绍
    Bayes决策:身高与体重特征进行性别分类
    常规的知识积累
  • 原文地址:https://blog.csdn.net/m0_71088505/article/details/134430420