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

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

如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證

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

HTTP是無(wú)狀態(tài)協(xié)議,用于傳輸數(shù)據(jù)。它啟用了客戶端和服務(wù)器端>之間的通信。它最初是為了在Web瀏覽器和Web服務(wù)器之間建立連接而建立的。比如在網(wǎng)上購(gòu)物,我們添加一些商品,例如。耳機(jī)到我們的購(gòu)物車(chē),然后,我們繼續(xù)尋找其他項(xiàng)目,在此期間,我們希望在執(zhí)行任何其他任務(wù)是存儲(chǔ)購(gòu)物車(chē)項(xiàng)目的狀態(tài)且不丟失它們。這意味著我們希望在整個(gè)購(gòu)物過(guò)程中記住我們的狀態(tài)。由于HTTP是無(wú)狀態(tài)協(xié)議,因此要克服問(wèn)題,我們可以使用會(huì)話或者令牌

1、基于會(huì)話的身份驗(yàn)證

在JSON Web令牌出現(xiàn)之前,我們主要使用這種身份驗(yàn)證。在這種身份驗(yàn)證中,服務(wù)器負(fù)責(zé)身份驗(yàn)證,客戶端不知道發(fā)送請(qǐng)求后服務(wù)器端會(huì)發(fā)生什么。

那么什么是會(huì)話Cookie?

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

如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證

用戶在網(wǎng)絡(luò)瀏覽器上登錄網(wǎng)站發(fā)生什么。例如,用戶登錄后,服務(wù)器 將為該用戶創(chuàng)建一個(gè)會(huì)話并將該會(huì)話數(shù)據(jù)存儲(chǔ)在服務(wù)器內(nèi)存中。當(dāng)用戶在網(wǎng)站上執(zhí)行某些活動(dòng)時(shí),會(huì)創(chuàng)建一個(gè)會(huì)話ID,該會(huì)話ID存儲(chǔ)在客戶端瀏覽器的cookie中。在用戶提出的每個(gè)請(qǐng)求中,cookie都將隨之發(fā)送。然后,當(dāng)用戶最初登錄時(shí),服務(wù)器可以使用存儲(chǔ)在服務(wù)器內(nèi)存中的會(huì)話數(shù)據(jù)來(lái)驗(yàn)證Cookie上的會(huì)話數(shù)據(jù)。當(dāng)用戶從網(wǎng)站注銷(xiāo)時(shí),該會(huì)話數(shù)據(jù)將從數(shù)據(jù)庫(kù)和服務(wù)器內(nèi)存中刪除。

2、基于令牌的身份驗(yàn)證

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

如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證

當(dāng)用戶發(fā)送帶有登錄詳細(xì)信息的用戶身份驗(yàn)證請(qǐng)求時(shí),服務(wù)器將以JSON WEB TOKENS(JWT)的形式創(chuàng)建一個(gè)加密的令牌,并將其發(fā)送回客戶端。當(dāng)客戶端收到令牌時(shí),這意味著該用戶以通過(guò)身份驗(yàn)證,可以使用客戶端執(zhí)行任何活動(dòng)。

JWT通常存儲(chǔ)在客戶端的localstorage中,當(dāng)用戶從服務(wù)器請(qǐng)求任何數(shù)據(jù)或?qū)υ摼W(wǎng)站執(zhí)行任何活動(dòng)時(shí),JWT將作為該用戶的唯一密鑰發(fā)送。因此,當(dāng)服務(wù)器接收到該請(qǐng)求時(shí),它將針對(duì)每個(gè)請(qǐng)求驗(yàn)證JWT僅是該特定用戶,然后將所需的響應(yīng)發(fā)送回客戶端。

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

用戶狀態(tài)存儲(chǔ)在客戶端JWT中。當(dāng)用戶注銷(xiāo)時(shí),令牌將從客戶端(localStorage)中刪除。因此,大多數(shù)數(shù)據(jù)存儲(chǔ)在客戶端,并且可以直接訪問(wèn),而不是向服務(wù)器發(fā)送請(qǐng)求。

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

JWT結(jié)構(gòu):xxxxx.yyyyy.zzzzz

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

JWT已對(duì)先前的標(biāo)頭和有效負(fù)載進(jìn)行了編碼,并用一個(gè)密鑰進(jìn)行簽名,如下

如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證

哪個(gè)更好用?

在現(xiàn)代Web應(yīng)用程序中,JWT被廣泛使用,因?yàn)樗纳炜s性優(yōu)于基于會(huì)話的cookie,因?yàn)榱钆拼鎯?chǔ)在客戶端,而會(huì)話使用服務(wù)器內(nèi)存來(lái)存儲(chǔ)用戶數(shù)據(jù),這可能是一個(gè)大問(wèn)題。大量用戶一次訪問(wèn)應(yīng)用程序。由于JWT是隨著每個(gè)請(qǐng)求一起發(fā)送的,而且包含所有用戶信息,因此即使對(duì)JWT進(jìn)行了編碼,也有必要在JWT中使用必要的信息,并且應(yīng)避免使用敏感信息或者將其加密以防止安全攻擊。

沒(méi)有固定的方法可以始終使用,它取決于開(kāi)發(fā)人員和要求的類(lèi)型,以找出在哪種情況下需要使用哪種方法。

3、jwt實(shí)現(xiàn)登錄

//定義JWT的有效時(shí)長(zhǎng)七天 private static final long EXPIRE_TIME = 60 * 1000 * 60 * 24 * 7; //簽發(fā)人 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) { //設(shè)置過(guò)期時(shí)間 Date date = null; try { date = new Date(System.currentTimeMillis() + EXPIRE_TIME); //創(chuàng)建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; } } /** * 驗(yàn)證token * * @param token */ public static boolean verify(String token, String userNo) { try { //設(shè)置加密算法 JWTVerifier verifier = JWT.require(Algorithm.HMAC256(SING)).withClaim('userNo', userNo).build(); //校驗(yàn)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, '請(qǐng)輸入用戶名,用戶名不能為空'); } if (empPassword == null || ''.equals(empPassword)) { return ResultUtil.error(103, '請(qǐng)輸入密碼,密碼不能為空'); } 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, '密碼錯(cuò)誤,獲取token失敗'); } //正常token String token = JwtUtils.sign(empNo, empPassword); emp.setToken(token); return ResultUtil.success(200, '登錄成功', emp); }

以上就是如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證的詳細(xì)內(nèi)容,更多關(guān)于使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 智慧养老_居家养老_社区养老_杰佳通 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 高硼硅玻璃|水位计玻璃板|光学三棱镜-邯郸奥维玻璃科技有限公司 高温高压釜(氢化反应釜)百科 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 电渗析,废酸回收,双极膜-山东天维膜技术有限公司 | 慈溪麦田广告公司,提供慈溪广告设计。 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 连续油炸机,全自动油炸机,花生米油炸机-烟台茂源食品机械制造有限公司 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 超声骨密度仪-骨密度检测仪-经颅多普勒-tcd仪_南京科进实业有限公司 | 洗瓶机厂家-酒瓶玻璃瓶冲瓶机-瓶子烘干机-封口旋盖压盖打塞机_青州惠联灌装机械 | 电缆桥架生产厂家_槽式/梯式_热镀锌线槽_广东东莞雷正电气 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 网站建设_网站制作_SEO优化推广_百度推广开户_朋友圈网络科技 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 | 伸缩节_伸缩器_传力接头_伸缩接头_巩义市联通管道厂 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 |