91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于JWT中的spring boot實現權限驗證技術

發布時間:2020-11-03 15:46:44 來源:億速云 閱讀:151 作者:Leah 欄目:開發技術

本篇文章為大家展示了基于JWT中的spring boot實現權限驗證技術,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

JWT簡介

Json Web Token(JWT):JSON網絡令牌,是為了在網絡應用環境間傳遞聲明而制定的一種基于JSON的開放標準((RFC 7519)。JWT是一個輕便的安全跨平臺傳輸格式,定義了一個緊湊的自包含的方式用于通信雙方之間以 JSON 對象行使安全的傳遞信息。因為數字簽名的存在,這些信息是可信的。

實現步驟:

環境spring boot

1、添加jwt依賴

 <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下創建annotation包

&#8203; 新建自定義注解類 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下創建utils包

&#8203; 新建自定義JwtUtils工具類

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;

/**
 * 用來生成簽名,校驗簽名,通過簽名
 */
public class JwtUtils {
  //令牌有效時間
  private final static long EXPIRE_TIME=5*60*1000;
  //密鑰
  private final static String SECRECT="Tyler_Yue_key";
  /**
   * 創建令牌
   */
  public static String sign(String userId){
    //構建失效時鐘
    Date exipre_date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
    //創建令牌
    JWTCreator.Builder builder = JWT.create();
    //給jwt令牌playload中放入發令牌放的用戶
    //給userid用戶發令牌
    builder.withAudience(userId);
    //設置令牌失效時間
    builder.withExpiresAt(exipre_date);
    //對令牌密鑰進行加密
    Algorithm algorithm = Algorithm.HMAC256(SECRECT);
    String sign = builder.sign(algorithm);
    return sign;//返回令牌
  }
  /**
   * 驗證令牌
   */
  public static boolean verifyToken(String token){

    try {
      //生成校驗器
      Algorithm algorithm = Algorithm.HMAC256(SECRECT);
      //校驗
      JWTVerifier build = JWT.require(algorithm).build();
      //無異常則校驗成功
      return true;
    } catch (Exception e) {
      throw new RuntimeException("令牌過期");
    }
   
  }
}

4、在src下新建vo包

封裝一個返回用戶帶令牌的 對象

package com.qf.tyleryue_one.vo;

import com.alibaba.druid.filter.AutoLoad;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 封裝一個返回 含令牌的用戶對象
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TokenVo {
  //用戶名
  private String usernaem;
  //令牌名
  private String token;
}

5、舉例controller層用戶登錄業務登錄帶令牌

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;

/**
 * 登錄業務
 */
@Controller
public 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())){
        //密碼匹配,發放令牌
        ///隨機生成字符串未userid
        String userid = UUID.randomUUID().toString();
        String token = JwtUtils.sign(userid);
        //封裝令牌對象
        TokenVo tokenVo = new TokenVo(vueUser.getUsername(), token);
        return new Msg(200,"登錄成功,令牌已發放",tokenVo);

      }else {
        return new Msg(403,"密碼錯誤",null);
      }
    }else {
      return new Msg(403,"用戶不存在",null);
    }
  }
}

上述內容就是基于JWT中的spring boot實現權限驗證技術,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆城县| 防城港市| 饶河县| 宜川县| 阿拉善盟| 黔江区| 康乐县| 板桥市| 汉中市| 云林县| 那曲县| 康定县| 河南省| 紫云| 望谟县| 兴山县| 乐亭县| 秀山| 葫芦岛市| 小金县| 新平| 许昌县| 大城县| 雅江县| 灌阳县| 剑川县| 日喀则市| 龙胜| 嵩明县| 邵阳县| 济南市| 汪清县| 兴安盟| 阿拉尔市| 湟源县| 增城市| 孝昌县| 武宣县| 凤阳县| 新和县| 泉州市|