国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解基于JWT的springboot權(quán)限驗(yàn)證技術(shù)實(shí)現(xiàn)

瀏覽:3日期:2023-04-11 18:05:48

JWT簡(jiǎn)介

Json Web Token(JWT):JSON網(wǎng)絡(luò)令牌,是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而制定的一種基于JSON的開(kāi)放標(biāo)準(zhǔn)((RFC 7519)。JWT是一個(gè)輕便的安全跨平臺(tái)傳輸格式,定義了一個(gè)緊湊的自包含的方式用于通信雙方之間以 JSON 對(duì)象行使安全的傳遞信息。因?yàn)閿?shù)字簽名的存在,這些信息是可信的。

實(shí)現(xiàn)步驟:

環(huán)境spring boot

1、添加jwt依賴(lài)

<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.8.1</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency>

2、在src下創(chuàng)建annotation包

新建自定義注解類(lèi) JwtToken

package com.qf.tyleryue_one.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 自定義注解:方法前 表示方法需要攔截 */@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public @interface JwtToken {}

3、在src下創(chuàng)建utils包

新建自定義JwtUtils工具類(lèi)

package com.qf.tyleryue_one.utils;import com.auth0.jwt.JWT;import com.auth0.jwt.JWTCreator;import com.auth0.jwt.JWTVerifier;import com.auth0.jwt.algorithms.Algorithm;import jdk.internal.org.objectweb.asm.TypeReference;import java.util.Date;/** * 用來(lái)生成簽名,校驗(yàn)簽名,通過(guò)簽名 */public class JwtUtils { //令牌有效時(shí)間 private final static long EXPIRE_TIME=5*60*1000; //密鑰 private final static String SECRECT='Tyler_Yue_key'; /** * 創(chuàng)建令牌 */ public static String sign(String userId){ //構(gòu)建失效時(shí)鐘 Date exipre_date = new Date(System.currentTimeMillis() + EXPIRE_TIME); //創(chuàng)建令牌 JWTCreator.Builder builder = JWT.create(); //給jwt令牌playload中放入發(fā)令牌放的用戶(hù) //給userid用戶(hù)發(fā)令牌 builder.withAudience(userId); //設(shè)置令牌失效時(shí)間 builder.withExpiresAt(exipre_date); //對(duì)令牌密鑰進(jìn)行加密 Algorithm algorithm = Algorithm.HMAC256(SECRECT); String sign = builder.sign(algorithm); return sign;//返回令牌 } /** * 驗(yàn)證令牌 */ public static boolean verifyToken(String token){ try { //生成校驗(yàn)器 Algorithm algorithm = Algorithm.HMAC256(SECRECT); //校驗(yàn) JWTVerifier build = JWT.require(algorithm).build(); //無(wú)異常則校驗(yàn)成功 return true; } catch (Exception e) { throw new RuntimeException('令牌過(guò)期'); } }}

4、在src下新建vo包

封裝一個(gè)返回用戶(hù)帶令牌的 對(duì)象

package com.qf.tyleryue_one.vo;import com.alibaba.druid.filter.AutoLoad;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;/** * 封裝一個(gè)返回 含令牌的用戶(hù)對(duì)象 */@Data@AllArgsConstructor@NoArgsConstructorpublic class TokenVo { //用戶(hù)名 private String usernaem; //令牌名 private String token;}

5、舉例controller層用戶(hù)登錄業(yè)務(wù)登錄帶令牌

package com.qf.tyleryue_one.controller;import com.qf.tyleryue_one.entity.VueUser;import com.qf.tyleryue_one.service.VueUserService;import com.qf.tyleryue_one.utils.JwtUtils;import com.qf.tyleryue_one.vo.Msg;import com.qf.tyleryue_one.vo.TokenVo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*;import java.util.UUID;/** * 登錄業(yè)務(wù) */@Controllerpublic class VueUserController { @Autowired private VueUserService vueUserService; @RequestMapping(value = '/dealLogin',method = RequestMethod.POST) @CrossOrigin @ResponseBody public Msg login(@RequestBody VueUser vueUser){ VueUser vueUser1 = vueUserService.selectByUsername(vueUser.getUsername()); if (vueUser1!=null){ if (vueUser1.getPassword().equals(vueUser.getPassword())){//密碼匹配,發(fā)放令牌///隨機(jī)生成字符串未useridString userid = UUID.randomUUID().toString();String token = JwtUtils.sign(userid);//封裝令牌對(duì)象TokenVo tokenVo = new TokenVo(vueUser.getUsername(), token);return new Msg(200,'登錄成功,令牌已發(fā)放',tokenVo); }else {return new Msg(403,'密碼錯(cuò)誤',null); } }else { return new Msg(403,'用戶(hù)不存在',null); } }}

到此這篇關(guān)于詳解基于JWT的springboot權(quán)限驗(yàn)證技術(shù)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)springboot JWT權(quán)限驗(yàn)證內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 悟空影视大全免费影视 | 欧美一区二区三区日韩免费播 | 乱人伦中文视频在线观看免费 | 国内精品久久久久久影院老狼 | 又黄又骚 | 99热久久免费精品首页 | 成人免费影院 | 国产亚洲人成网站观看 | 欧美大片一区二区三区 | 一级特级aaaa毛片免费观看 | 99久久国产免费福利 | 亚洲美女一级片 | 精品一精品国产一级毛片 | 亚洲一区二区三区不卡视频 | 亚洲综合亚洲综合网成人 | 日韩一区二区不卡中文字幕 | 国产精品一二三区 | 欧美一级成人一区二区三区 | 国产美女91视频 | 精品国产欧美一区二区三区成人 | 国产成年人视频 | 日本三级在线观看中文字 | 久久精品一区二区免费看 | 亚洲成在人线中文字幕 | 亚洲天堂2018av| 碰碰碰精品视频在线观看 | 99久久精品免费看国产一区二区 | 五月久久噜噜噜色影 | 日本一级毛片中文字幕 | 日本在线观看www免费 | 亚洲国产片 | 欧美高清免费一级在线 | 国产精品视频免费一区二区三区 | 亚洲精品欧美精品国产精品 | 本道久久综合88全国最大色 | 欧洲性大片xxxxx久久久 | 精品日本亚洲一区二区三区 | 久久久久久久久网站 | 亚洲产国偷v产偷v自拍涩爱 | 久久精品中文字幕不卡一二区 | 久久亚洲国产中v天仙www |