国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 如何使用會話Cookie和Java實現JWT身份驗證

如何使用會話Cookie和Java實現JWT身份驗證

2021-08-23 14:24Kang_kin Java教程

這篇文章主要介紹了如何使用會話Cookie和Java實現JWT身份驗證,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

HTTP是無狀態協議,用于傳輸數據。它啟用了客戶端和服務器端>之間的通信。它最初是為了在Web瀏覽器和Web服務器之間建立連接而建立的。比如在網上購物,我們添加一些商品,例如。耳機到我們的購物車,然后,我們繼續尋找其他項目,在此期間,我們希望在執行任何其他任務是存儲購物車項目的狀態且不丟失它們。這意味著我們希望在整個購物過程中記住我們的狀態。由于HTTP是無狀態協議,因此要克服問題,我們可以使用會話或者令牌

1、基于會話的身份驗證

在JSON Web令牌出現之前,我們主要使用這種身份驗證。在這種身份驗證中,服務器負責身份驗證,客戶端不知道發送請求后服務器端會發生什么。

那么什么是會話Cookie?

由于客戶端未指定Expires(過期時間)或Max-Age(最大上限)指令,因此在客戶端關閉時將其刪除。但是,Web瀏覽器可能會使用會話還原,這會使大多數會話Cookie永久保持狀態,就像從未關閉過瀏覽器一樣。

如何使用會話Cookie和Java實現JWT身份驗證

用戶在網絡瀏覽器上登錄網站發生什么。例如,用戶登錄后,服務器 將為該用戶創建一個會話并將該會話數據存儲在服務器內存中。當用戶在網站上執行某些活動時,會創建一個會話ID,該會話ID存儲在客戶端瀏覽器的cookie中。在用戶提出的每個請求中,cookie都將隨之發送。然后,當用戶最初登錄時,服務器可以使用存儲在服務器內存中的會話數據來驗證Cookie上的會話數據。當用戶從網站注銷時,該會話數據將從數據庫和服務器內存中刪除。

2、基于令牌的身份驗證

在基于令牌的身份驗證中,我們使用JWT(JSON Web Tokens)進行身份驗證。這是RESTful API的廣泛使用方法。

如何使用會話Cookie和Java實現JWT身份驗證

當用戶發送帶有登錄詳細信息的用戶身份驗證請求時,服務器將以JSON WEB TOKENS(JWT)的形式創建一個加密的令牌,并將其發送回客戶端。當客戶端收到令牌時,這意味著該用戶以通過身份驗證,可以使用客戶端執行任何活動。

JWT通常存儲在客戶端的localstorage中,當用戶從服務器請求任何數據或對該網站執行任何活動時,JWT將作為該用戶的唯一密鑰發送。因此,當服務器接收到該請求時,它將針對每個請求驗證JWT僅是該特定用戶,然后將所需的響應發送回客戶端。

localStorage.setItem("key", "value");

用戶狀態存儲在客戶端JWT中。當用戶注銷時,令牌將從客戶端(localStorage)中刪除。因此,大多數數據存儲在客戶端,并且可以直接訪問,而不是向服務器發送請求。

JSON WEB TOKENS由(.)連接的三個部分組成:
1.標頭
2.有效載荷
3.簽名

JWT結構:
xxxxx.yyyyy.zzzzz

輸出包含三個由點分割的Base64-URL字符串,可以在HTML和HTTP環境中輕松傳遞這些字符串,與基于XML的標準(例如SAML)相比,它更緊湊。

JWT已對先前的標頭和有效負載進行了編碼,并用一個密鑰進行簽名,如下

如何使用會話Cookie和Java實現JWT身份驗證

哪個更好用?

在現代Web應用程序中,JWT被廣泛使用,因為它的伸縮性優于基于會話的cookie,因為令牌存儲在客戶端,而會話使用服務器內存來存儲用戶數據,這可能是一個大問題。大量用戶一次訪問應用程序。由于JWT是隨著每個請求一起發送的,而且包含所有用戶信息,因此即使對JWT進行了編碼,也有必要在JWT中使用必要的信息,并且應避免使用敏感信息或者將其加密以防止安全攻擊。

沒有固定的方法可以始終使用,它取決于開發人員和要求的類型,以找出在哪種情況下需要使用哪種方法。

3、jwt實現登錄

 //定義JWT的有效時長七天
 private static final long EXPIRE_TIME = 60 * 1000 * 60 * 24 * 7;
 //簽發人
 private static String ISSUER = "K_ang";
 /*秘鑰*/
 private static final String SING = K*&^A%$#N@!G;
 /**
  * 生成令牌
  *
  * @param map
  * @return
  */
 public static String getToken(Map<String, String> map) {

  //設置過期時間
  Date date = null;
  try {
   date = new Date(System.currentTimeMillis() + EXPIRE_TIME);

   //創建token
   JWTCreator.Builder builder = JWT.create()
     .withIssuer(ISSUER)
     .withExpiresAt(date);
   //添加信息
   map.forEach((k, v) -> {
    builder.withClaim(k, v);
   });
   return builder.sign(Algorithm.HMAC256(SING));
  } catch (Exception e) {
   e.printStackTrace();
   return null;
  }
 }

 /**
  * 驗證token
  *
  * @param token
  */
 public static boolean verify(String token, String userNo) {
  try {
   //設置加密算法
   JWTVerifier verifier = JWT.require(Algorithm.HMAC256(SING)).withClaim("userNo", userNo).build();
   //校驗token
   DecodedJWT jwt = verifier.verify(token);
   return true;
  } catch (Exception e) {
   return false;
  }


 }

 /**
  * 獲取token信息方法
  *
  * @param
  * @return
  */
 public static String getTokenInfo(String token) {
  DecodedJWT decode = JWT.decode(token);
  return decode.getClaim("userNo").asString();
 }
}
@PostMapping("/login")
 public Result login(@PathParam("empNo") String empNo, @PathParam("empPassword") String empPassword) {
  if (empNo == null || "".equals(empNo)) {
   return ResultUtil.error(103, "請輸入用戶名,用戶名不能為空");
  }
  if (empPassword == null || "".equals(empPassword)) {
   return ResultUtil.error(103, "請輸入密碼,密碼不能為空");
  }
  Emp emp = empService.login(empNo, empPassword);
  if (emp == null) {
   return ResultUtil.error(103, "用戶不存在,獲取token失敗");
  }
  if (emp.getEmpPassword() == null || !emp.getEmpPassword().equals(empPassword)) {
   return ResultUtil.error(103, "密碼錯誤,獲取token失敗");
  }
  //正常token
  String token = JwtUtils.sign(empNo, empPassword);
  emp.setToken(token); 
  return ResultUtil.success(200, "登錄成功", emp);
 }

以上就是如何使用會話Cookie和Java實現JWT身份驗證的詳細內容,更多關于使用會話Cookie和Java實現JWT身份驗證的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/kangkin/p/14513358.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人在线视频网站 | 久久久中文字幕 | 国产成人一区二区三区在线观看 | 天天插天天狠 | 成年黄色在线观看 | 仙人掌旅馆在线观看 | 国产精品自拍视频网站 | 国产成人精品免高潮在线观看 | 精品视频一区二区三区 | 九九综合 | 欧美日韩亚洲国产 | 欧美激情综合网 | 亚洲国产精品久久久久 | 综合网激情五月 | 九色视频网站 | 亚洲综合欧美 | 黄色电影在线免费观看 | 久久免费福利视频 | 亚洲精品一区二区三区99 | 亚洲在线一区二区 | 精品国产三级 | 欧美精品成人 | 免费在线观看黄色 | 亚洲视频在线观看免费 | 国产美女在线观看 | 国产一区精品在线 | 成人午夜视频在线观看 | 久久久久久久久久久免费 | 久久黄色网| 中文字幕在线日韩 | 在线观看的av| 国产精品无码久久久久 | 国产一区欧美 | 欧美福利视频 | 亚洲一区在线日韩在线深爱 | jizzjizzjizz亚洲女 | 亚洲精品久久久蜜桃 | 日韩欧美精品一区二区三区 | 国产99精品在线 | 羞羞免费视频网站 | 日韩不卡一区二区三区 |