SpringBoot Jwt令牌的使用(黑马javaweb)

JWT概念

JSON Web Token (JWT)是一种开放标准(RFC 7519),它定义了一种紧凑和自包含的方式,用于作为JSON对象在各方之间安全地传输信息。这个信息可以被验证和信任,因为它是数字签名的。JWTs可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。

JWT作用

1、授权 2、信息交换

JWT示例代码

1、SpringBoot中引入JWT


    io.jsonwebtoken
    jjwt
    0.9.1
2、创建工具类
package com.wdf.project03.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

public class JwtUtils {
    private static String signKey = "wdf001"; //密钥
    private static Long expire = 43200000L; //有效时间
    public static String generateJwt(Map claims){
        String jwt = Jwts.builder()
                .addClaims(claims)
                .signWith(SignatureAlgorithm.HS256,signKey)
                .setExpiration(new Date(System.currentTimeMillis() + expire))
                .compact();
        return jwt;
    }
    public static Claims parseJWT(String jwt){
        Claims claims = Jwts.parser()
                .setSigningKey(signKey).parseClaimsJws(jwt).getBody();
        return claims;
    }
}
3、调用工具类型生产token
package com.wdf.project03.controller;


import com.wdf.project03.pojo.Emp;
import com.wdf.project03.pojo.Result;
import com.wdf.project03.service.EempService;
import com.wdf.project03.util.JwtUtils;
import jdk.nashorn.internal.ir.ReturnNode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@Slf4j
@RestController
public class LoginController {
    @Autowired
    private EempService empService;
    @PostMapping("login")
    public Result login(@RequestBody Emp emp){
        log.info("员工登录:{}",emp);
        Emp empQuery = empService.selectCount(emp);
        if(empQuery != null){
            Map claims = new HashMap<>();
            claims.put("id",empQuery.getId());
            claims.put("name",empQuery.getName());
            claims.put("username",empQuery.getUsername());
            String jwt = JwtUtils.generateJwt(claims);
            return Result.success(jwt);
        }
        return Result.error("用户名或密码错误");
    }

}

你可能感兴趣的:(SpringBoot,JAVA,Idea,spring,boot,后端,java,spring,intellij-idea,log4j,mybatis)