首页 > 其他分享 >登录认证-引入(JWT令牌)

登录认证-引入(JWT令牌)

时间:2024-03-04 23:34:28浏览次数:28  
标签:令牌 jwt JWT springframework 认证 org import com public

//ArticleController
package com.di.bigevent.controller;

import com.di.bigevent.pojo.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/article")
public class ArticleController {
    @GetMapping("/list")
    public Result<String> list(){
        return Result.success("所有的文章数据....");
    }
}
//可以在浏览器用:locoalhost:8080/article/list,直接访问,所以需要令牌

//ArticleController
package com.di.bigevent.controller;

import com.di.bigevent.pojo.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/article")
public class ArticleController {
    @GetMapping("/list")
    public Result<String> list(){
        return Result.success("所有的文章数据....");
    }
}
//可以在浏览器用:locoalhost:8080/article/list,直接访问,所以需要令牌

引入工具:

<!--jwt令牌坐标-->
<dependency>
       <groupId>com.auth0</groupId>
       <artifactId>java-jwt</artifactId>
       <version>4.4.0</version>
</dependency>
~~~

~~~xml
 <!--单元测试的坐标-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

在test里,创建一个类

package com.di.bigevent;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.junit.jupiter.api.Test;

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

public class JwtTest {

    @Test
    public void TestGen(){

        Map<String,Object> claims = new HashMap<>();
        claims.put("id",1);
        claims.put("username","张三");
        //生成jwt代码
        String token = JWT.create()
                .withClaim("user",claims)//添加载荷
                .withExpiresAt(new Date(System.currentTimeMillis()+1000*60*60*12))//添加过期时间
                .sign(Algorithm.HMAC256("123456"));//指定算法,配置密钥

        System.out.println(token);
    }

    @Test
    public void testParse(){
        //定义字符串,模拟用户传递过来的token
        String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6IuW8oOS4iSJ9LCJleHAiOjE3MDYzMjMzMDV9.3YcLr0z6NAXZMVLxg3NbhsnBpP1ra8k022QenfCbF-k";

        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("123456")).build();

        DecodedJWT decodedJWT = jwtVerifier.verify(token);//验证token,生成一个解析后的JWT对象

        Map<String, Claim> claims = decodedJWT.getClaims();


        System.out.println(claims.get("user"));
    }
}

标签:令牌,jwt,JWT,springframework,认证,org,import,com,public
From: https://www.cnblogs.com/muzhaodi/p/18053019

相关文章

  • Windows操作系统中的时间戳(Timestamp)是指用于标记事件发生时间的一种时间表示方式。在
    Windows操作系统中的时间戳(Timestamp)是指用于标记事件发生时间的一种时间表示方式。在计算机系统中,时间戳通常用来记录文件的创建时间、修改时间、访问时间等信息,也常用于网络通信中的认证和数据同步等场景。以下是Windows时间戳的基础技术原理:系统时钟:Windows操作系统通过系统......
  • Django项目中使用JWT身份验证
    一、什么是JWTJWT,全称是JSONWebToken,是一个开放标准(RFC7519),它定义了一种紧凑的、自包含的方式,用于在多方之间安全地传输JSON格式的信息。这些信息可以被验证和信任,因为它们是数字签名的。JWT由三部分组成:头部(Header)、负载(Payload)、签名(Signature),每部分之间以.分隔。JWT最常见......
  • 国产数据库兼容性认证再下两城,极狐GitLab 国产适配更进一步
    近日,极狐GitLab与两大国产数据库TDSQL和人大金仓完成兼容性认证。极狐GitLab在国产化适配、国产化生态建设上有了进一步的发展。极狐GitLab团队分别和TDSQL和人大金仓数据库团队做了严格的测试验证,完成了这两大国产数据库和极狐GitLab企业级一体化DevOps平台的兼容性认......
  • springboot将用户认证信息提取到上下文,获取用户实体
    @ServicepublicclassInfoServiceImplimplementsInfoService{@OverridepublicMap<String,String>getinfo(){//将用户认证信息从上下文中(SecurityContext)提取出来UsernamePasswordAuthenticationTokenauthenticationToken=......
  • FastAPI系列:HttpBasic基本认证
    HttpBasic基本认证fromfastapiimportFastAPI,Dependsfromfastapi.securityimportHTTPBasic,HTTPBasicCredentialsfromfastapi.exceptionsimportHTTPExceptionfromfastapi.responsesimportPlainTextResponsefromstarlette.statusimportHTTP_401_UNAUTHORIZE......
  • FastAPI系列:jwt认证
    jwt认证1.头部Header,主要是对jwt元数据的描述{'alg':'HS256','typ':'JWT'}2.载荷playload,主要包含jwt信息需要传递的主体数据{'iss':'jack',#由jwt签发'sub':'jack',#该jwt面向的用户组,也称为主题......
  • FastAPI系列:自定义认证
    fromtypingimportOptional,TuplefromfastapiimportFastAPI,RequestfrompydanticimportBaseModel#通过starlette.authentication导入AuthenticationBackendfromstarlette.authenticationimportAuthenticationBackend,AuthenticationError,AuthCredentials,S......
  • Salesforce【初级开发】认证备考攻略来袭!
    PlatformDeveloperI认证考试是面向Salesforce平台工作者的基础考试。如果你想成为Salesforce开发人员,这是一项关键考试。而且通过准备此考试获得的知识框架对所有角色都有好处,包括管理员、架构师、业务分析师、产品所有者和项目经理。 初级开发考试指南指出,备考者最好有1到2......
  • Nacos身份认证绕过漏洞解决
    一、备份1.1备份nacos停止nacos服务/web/nacos/bin/shutdown.shcd/webmvnacosnacosbak-202311281.2备份mysql数据mysqldump-uroot-p-A>/web/nacos-20231128.sql二、部署新版nacos2.1下载nacos安装包cd/webwgethttps://github.com/alibaba/nacos/releases/......
  • 白鲸开源科技与瀚高基础软件完成产品兼容性认证,开启数据管理新篇章
    北京白鲸开源科技有限公司(以下简称“白鲸开源”)今日宣布,其旗舰产品WhaleStudio套件已与瀚高基础软件股份有限公司(以下简称“瀚高软件”)旗下的IvorySQL数据库管理系统V3.0完成深度兼容性认证。此次合作标志着两家领军企业在数据管理领域的紧密联合,为用户提供更加稳定、高效的数据处......