国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SpringBoot篇】登錄校驗(yàn) — JWT令牌

這篇具有很好參考價(jià)值的文章主要介紹了【SpringBoot篇】登錄校驗(yàn) — JWT令牌。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java

??簡(jiǎn)述JWT令牌

JWT全稱為JSON Web Token,是一種用于身份驗(yàn)證的開(kāi)放標(biāo)準(zhǔn)。它是一個(gè)基于JSON格式的安全令牌,主要用于在網(wǎng)絡(luò)上傳輸聲明或者用戶身份信息。JWT通常被用作API的認(rèn)證方式,以及跨域身份驗(yàn)證。

JWT令牌由三部分組成,分別是頭部(Header)、載荷(Payload)和簽名(Signature)。頭部包含了令牌使用的加密算法信息,載荷包含了所需傳輸?shù)挠脩粜畔ⅲ灻糜诒WC令牌的完整性和真實(shí)性,防止令牌被篡改。
【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java
【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java

官網(wǎng)https://jwt.io/

?JWT特點(diǎn)

  • 可以跨語(yǔ)言、跨平臺(tái)使用,因?yàn)樗腔贘SON標(biāo)準(zhǔn)的。
  • 可以直接嵌入到HTTP請(qǐng)求頭中,方便傳輸和驗(yàn)證。
  • 令牌的有效期可以通過(guò)設(shè)置過(guò)期時(shí)間來(lái)進(jìn)行控制,提高了安全性。
  • 由于令牌中包含了用戶信息,因此可以避免頻繁查詢數(shù)據(jù)庫(kù)的情況出現(xiàn),提高了系統(tǒng)的性能。

??JWT使用流程

用戶向服務(wù)器發(fā)送登錄請(qǐng)求,服務(wù)器進(jìn)行身份驗(yàn)證,如果驗(yàn)證成功則返回一個(gè)JWT令牌給客戶端。

客戶端收到JWT令牌后,將其保存在本地。每次向服務(wù)器發(fā)送請(qǐng)求時(shí),在請(qǐng)求的頭部中攜帶該令牌,以便服務(wù)器對(duì)請(qǐng)求進(jìn)行身份驗(yàn)證。

服務(wù)器收到請(qǐng)求后,從請(qǐng)求頭中提取JWT令牌,并進(jìn)行解析和驗(yàn)證。如果令牌有效,則允許請(qǐng)求繼續(xù)執(zhí)行;否則返回錯(cuò)誤信息。

生成令牌,校驗(yàn)令牌
【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java
在服務(wù)端攔截所有的請(qǐng)求,判斷算法有合法的jwt請(qǐng)求,如果有,直接放行,否則進(jìn)行攔截

??JWT令牌代碼實(shí)現(xiàn)

我把代碼腳手架傳到網(wǎng)盤里面了,大家跟著代碼來(lái)學(xué)習(xí)
我用夸克網(wǎng)盤分享了「tlias-web-management」,點(diǎn)擊鏈接即可保存。
鏈接:https://pan.quark.cn/s/1f4f6c129be8

添加依賴

<!--        JWT令牌-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

生成JWT令牌

 //生成jwt
    @Test
    public void testGenJwt(){
        Map<String, Object> claims = new HashMap<>();
        claims.put("id",1);
        claims.put("name","Tom");

        String jwt = Jwts.builder()
                .signWith(SignatureAlgorithm.HS512, "itheima")  //簽名算法
                .setClaims(claims)   //自定義內(nèi)容
                                //有參構(gòu)造方法
                .setExpiration(new Date(System.currentTimeMillis()+3600))  //令牌過(guò)期時(shí)間
               .compact();
        System.out.println(jwt);

    }

【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java
運(yùn)行后發(fā)現(xiàn),出現(xiàn)了jwt令牌
【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java
我們把這一段jwt令牌復(fù)制粘貼到j(luò)wt官網(wǎng)進(jìn)行解析一下

https://jwt.io/

【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java
解析jwt令牌
(相當(dāng)于校驗(yàn)令牌,只要解析令牌不報(bào)錯(cuò),就相當(dāng)于校驗(yàn)jwt令牌正確)

   //解析jwt
    @Test
    public void testParseJwt() {
        Claims claims=Jwts.parser()
                .setSigningKey("itheima")
                //寫入你剛才運(yùn)行出來(lái)的jwt令牌
                .parseClaimsJws("eyJhbGciOiJIUzUxMiJ9.eyJuYW1lIjoiVG9tIiwiaWQiOjEsImV4cCI6MTcwMDcyMzQ1M30.GMp1Z-osnaOJ08nM3uswPKRFIaKS4e6_UvZXq2Q4QjYBFRcJNk7WgQRkFJHXIUrZfKovXUZhd8-OOKtXYDyrbg")
                .getBody();
        System.out.println(claims);
    }

【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java
解析出來(lái)了
【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java

可能會(huì)發(fā)生這種報(bào)錯(cuò),是因?yàn)閖wt令牌過(guò)期了,重新生成一個(gè)即可
【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java


??JWT應(yīng)用

我們接著上面的代碼寫,引入jwt工具類

【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java

package com.itheima.utils;

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 = "itheima";	//簽名密鑰
    private static Long expire = 43200000L;		//過(guò)期時(shí)間

    /**
     * 生成JWT令牌
     * @param claims JWT第二部分負(fù)載 payload 中存儲(chǔ)的內(nèi)容
     * @return
     */
    public static String generateJwt(Map<String, Object> claims){
        String jwt = Jwts.builder()
                .addClaims(claims)
                .signWith(SignatureAlgorithm.HS256, signKey)
                .setExpiration(new Date(System.currentTimeMillis() + expire))
                .compact();
        return jwt;
    }

    /**
     * 解析JWT令牌
     * @param jwt JWT令牌
     * @return JWT第二部分負(fù)載 payload 中存儲(chǔ)的內(nèi)容
     */
    public static Claims parseJWT(String jwt){
        Claims claims = Jwts.parser()
                .setSigningKey(signKey)
                .parseClaimsJws(jwt)
                .getBody();
        return claims;
    }
}

創(chuàng)建LoginController,里面包含了生成jwt令牌的代碼
【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java

package com.itheima.controller;

import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import com.itheima.utils.JwtUtils;
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 EmpService empService;

    @PostMapping("/login")
    public Result login(@RequestBody Emp emp){
        log.info("員工登錄: {}", emp);
        Emp e = empService.login(emp);

        //登錄成功,生成令牌,下發(fā)令牌
        if (e != null){
            Map<String, Object> claims = new HashMap<>();
            claims.put("id", e.getId());
            claims.put("name", e.getName());
            claims.put("username", e.getUsername());

            String jwt = JwtUtils.generateJwt(claims); //jwt包含了當(dāng)前登錄的員工信息
            return Result.success(jwt);
        }

        //登錄失敗, 返回錯(cuò)誤信息
        return Result.error("用戶名或密碼錯(cuò)誤");
    }

}

在技術(shù)的道路上,我們不斷探索、不斷前行,不斷面對(duì)挑戰(zhàn)、不斷突破自我??萍嫉陌l(fā)展改變著世界,而我們作為技術(shù)人員,也在這個(gè)過(guò)程中書寫著自己的篇章。讓我們攜手并進(jìn),共同努力,開(kāi)創(chuàng)美好的未來(lái)!愿我們?cè)诳萍嫉恼魍旧喜粩鄪^進(jìn),創(chuàng)造出更加美好、更加智能的明天!

【SpringBoot篇】登錄校驗(yàn) — JWT令牌,SpringBoot,spring boot,后端,java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-751775.html

到了這里,關(guān)于【SpringBoot篇】登錄校驗(yàn) — JWT令牌的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot 優(yōu)雅集成 Spring Security 5.7(安全框架)與 JWT(雙令牌機(jī)制)

    Spring Boot 優(yōu)雅集成 Spring Security 5.7(安全框架)與 JWT(雙令牌機(jī)制)

    本章節(jié)將介紹 Spring Boot 集成 Spring Security 5.7(安全框架)。 ?? Spring Boot 2.x 實(shí)踐案例(代碼倉(cāng)庫(kù)) Spring Security 是一個(gè)能夠?yàn)榛?Spring 的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框架。 它提供了一組可以在 Spring 應(yīng)用上下文中配置的 Bean,充分利用了 Spring

    2024年02月12日
    瀏覽(53)
  • springboot登錄校驗(yàn)[JWT]

    springboot登錄校驗(yàn)[JWT]

    前言 : ??作者簡(jiǎn)介:我是笑霸final,一名熱愛(ài)技術(shù)的在校學(xué)生。 ??個(gè)人主頁(yè):個(gè)人主頁(yè)1 || 笑霸final的主頁(yè)2 ??系列專欄:后端專欄 ??如果文章知識(shí)點(diǎn)有錯(cuò)誤的地方,請(qǐng)指正!和大家一起學(xué)習(xí),一起進(jìn)步?? ??如果感覺(jué)博主的文章還不錯(cuò)的話,??點(diǎn)贊?? + ??關(guān)注?? + ??

    2023年04月17日
    瀏覽(15)
  • 微信小程序的授權(quán)登錄-Java 后端 (Spring boot)

    微信開(kāi)發(fā)文檔鏈接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 一個(gè)可以測(cè)試的微信小程序 此微信小程序的APPID和APPscret(至開(kāi)發(fā)者后臺(tái)獲?。?從時(shí)序圖我們可以了解到流程大致分為兩步: 小程序端獲取code后傳給Java后臺(tái) Java后臺(tái)獲取code后向微信后臺(tái)接口

    2024年02月09日
    瀏覽(97)
  • web學(xué)習(xí)--登錄認(rèn)證--會(huì)話技術(shù)--cookie--session--令牌--java-jwt使用--jjwt使用

    web學(xué)習(xí)--登錄認(rèn)證--會(huì)話技術(shù)--cookie--session--令牌--java-jwt使用--jjwt使用

    前置學(xué)習(xí): http springmvc 會(huì)話:用戶打開(kāi)瀏覽器,訪問(wèn)web服務(wù)器資源,會(huì)話建立,直到有一方斷開(kāi)連接會(huì)話結(jié)束,一次會(huì)話可以多次請(qǐng)求和連接 會(huì)話跟蹤:一種維護(hù)瀏覽器狀態(tài)的方式,服務(wù)器需要識(shí)別多次請(qǐng)求是否來(lái)自同一瀏覽器,以便同一次會(huì)話多次請(qǐng)求間共享數(shù)據(jù)。 cooki

    2024年02月15日
    瀏覽(50)
  • SpringCloud gateway+Spring Security + JWT實(shí)現(xiàn)登錄和用戶權(quán)限校驗(yàn)

    SpringCloud gateway+Spring Security + JWT實(shí)現(xiàn)登錄和用戶權(quán)限校驗(yàn)

    原本打算將Security模塊與gateway模塊分開(kāi)寫的,但想到gateway本來(lái)就有過(guò)濾的作用 ,于是就把gateway和Security結(jié)合在一起了,然后結(jié)合JWT令牌對(duì)用戶身份和權(quán)限進(jìn)行校驗(yàn)。 Spring Cloud的網(wǎng)關(guān)與傳統(tǒng)的SpringMVC不同,gateway是基于Netty容器,采用的webflux技術(shù),所以gateway模塊不能引入spri

    2024年02月03日
    瀏覽(25)
  • JWT簡(jiǎn)介& JWT結(jié)構(gòu)& JWT示例& 前端添加JWT令牌功能& 后端程序

    JWT簡(jiǎn)介& JWT結(jié)構(gòu)& JWT示例& 前端添加JWT令牌功能& 后端程序

    目錄 1. JWT簡(jiǎn)述 1.1 什么是JWT 1.2 為什么使用JWT 1.3 JWT結(jié)構(gòu) 1.4 驗(yàn)證過(guò)程 2. JWT示例 2.1 后臺(tái)程序 2.2 前臺(tái)加入jwt令牌功能 Json web token (JWT), 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開(kāi)放標(biāo)準(zhǔn)((RFC 7519).該token被設(shè)計(jì)為緊湊且安全的,特別適用于分布式站點(diǎn)的單點(diǎn)登錄

    2024年04月16日
    瀏覽(22)
  • Spring boot框架 JWT實(shí)現(xiàn)用戶賬戶密碼登錄驗(yàn)證

    Spring boot框架 JWT實(shí)現(xiàn)用戶賬戶密碼登錄驗(yàn)證

    目錄 1、JWT定義 1、1 JWT工作流程 1、2 JWT優(yōu)點(diǎn) 2、添加依賴項(xiàng)到pom.xml? 3、創(chuàng)建用戶實(shí)體類 ?4、實(shí)現(xiàn)認(rèn)證服務(wù) 5、登錄請(qǐng)求處理 6、生成JWT JWT(JSON Web Token)是一種用于在網(wǎng)絡(luò)應(yīng)用間傳遞信息的安全傳輸方式。它是一種緊湊且自包含的方式,通過(guò)使用數(shù)字簽名來(lái)驗(yàn)證數(shù)據(jù)的完整性

    2024年02月07日
    瀏覽(23)
  • 在Spring boot中 使用JWT和過(guò)濾器實(shí)現(xiàn)登錄認(rèn)證

    在Spring boot中 使用JWT和過(guò)濾器實(shí)現(xiàn)登錄認(rèn)證

    在navicat中運(yùn)行如下sql,準(zhǔn)備一張user表 導(dǎo)入pom.xml坐標(biāo) 在工utils包下創(chuàng)建一個(gè)用于生成和解析JWT 令牌的工具類 在pojo包下創(chuàng)建user類 在mapper包下添加 UserMapper接口 在service包下添加 UserService類 在utils包下添加統(tǒng)一響應(yīng)結(jié)果封裝類 在controller包下添加LoginController類 這樣登錄獲取toke

    2024年02月06日
    瀏覽(18)
  • 【SpringBoot】JWT令牌

    【SpringBoot】JWT令牌

    ? ?? ?????個(gè)人主頁(yè): 五敷有你 ? ? ?? ???系列專欄: SpringBoot ??穩(wěn)重求進(jìn),曬太陽(yáng) JWT簡(jiǎn)稱JSON Web Token,也就是通過(guò)JSON形式作為Web應(yīng)用的令牌,用于各方面之間安全的將信息作為JSON對(duì)象傳輸,在數(shù)據(jù)傳輸過(guò)程中 1.授權(quán) 這是使用JWT的最常見(jiàn)的方案,一旦用戶登錄,每個(gè)

    2024年02月20日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包