电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:121日期:2022-08-15 14:21:52

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身份驗證的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 干培两用箱-细菌恒温培养箱-菲斯福仪器 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 真空乳化机-灌装封尾机-首页-温州精灌 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 济南办公室装修-厂房装修-商铺装修-工装公司-山东鲁工装饰设计 | 万濠影像仪(万濠投影仪)百科-苏州林泽仪器 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 铸铁平台,大理石平台专业生产厂家_河北-北重机械 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 真石漆,山东真石漆,真石漆厂家,真石漆价格-山东新佳涂料有限公司 | 菏泽商标注册_菏泽版权登记_商标申请代理_菏泽商标注册去哪里 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 物和码官网,物和码,免费一物一码数字化营销SaaS平台 | 神马影院-实时更新秒播 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 上海律师事务所_上海刑事律师免费咨询平台-煊宏律师事务所 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 合肥展厅设计-安徽展台设计-合肥展览公司-安徽奥美展览工程有限公司 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 家德利门业,家居安全门,别墅大门 - 安徽家德利门业有限公司 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 球磨机,节能球磨机价格,水泥球磨机厂家,粉煤灰球磨机-吉宏机械制造有限公司 | 百度网站优化,关键词排名,SEO优化-搜索引擎营销推广 | 成都网站建设制作_高端网站设计公司「做网站送优化推广」 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 |