国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

web會(huì)話跟蹤以及JWT響應(yīng)攔截機(jī)制

這篇具有很好參考價(jià)值的文章主要介紹了web會(huì)話跟蹤以及JWT響應(yīng)攔截機(jī)制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

JWT

會(huì)話跟蹤

token

響應(yīng)攔截器


http是無狀態(tài)的,登錄成功后,客戶端就與服務(wù)器斷開連接,之后再向后端發(fā)送請(qǐng)求時(shí),后端需要知道前端是哪個(gè)用戶在進(jìn)行操作。

JWT

Json web token (JWT), 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一 種基于 JSON 的開放標(biāo)準(zhǔn)((RFC 7519).定義了一種簡(jiǎn)潔的,自包含的方法用于通信雙方之間以 JSON 對(duì)象的形式安全的傳遞信息。

web會(huì)話跟蹤以及JWT響應(yīng)攔截機(jī)制,前端

會(huì)話跟蹤

1. 用戶使用賬號(hào)和密碼發(fā)出 post 請(qǐng)求;

2. 服務(wù)器使用私鑰創(chuàng)建一個(gè) jwt;

public class JWTUtil {

    /**
     * 根據(jù)用戶id,賬號(hào)生成token
     * @param admin
     * @return
     */
    public static String getToken(Admin admin) {
        String token = "";
        try {
            //過期時(shí)間 為1970.1.1 0:0:0 至 過期時(shí)間  當(dāng)前的毫秒值 + 有效時(shí)間
            Date expireDate = new Date(new Date().getTime() + 10*1000);
            //秘鑰及加密算法
            Algorithm algorithm = Algorithm.HMAC256("ZCEQIUBFKSJBFJH2020BQWE");
            //設(shè)置頭部信息
            Map<String,Object> header = new HashMap<>();
            header.put("typ","JWT");
            header.put("alg","HS256");
            //攜帶id,賬號(hào)信息,生成簽名
            token = JWT.create()
                    .withHeader(header)
                    .withClaim("id",admin.getId())
                    .withClaim("account",admin.getAccount())
                    .withExpiresAt(expireDate)
                    .sign(algorithm);
        }catch (Exception e){
            e.printStackTrace();
            return  null;
        }
        return token;
    }

    /**
     * 驗(yàn)證token是否有效
     * @param token
     * @return
     */
    public static boolean verify(String token){
        try {
            //驗(yàn)簽
            Algorithm algorithm = Algorithm.HMAC256("ZCEQIUBFKSJBFJH2020BQWE");
            JWTVerifier verifier = JWT.require(algorithm).build();
            DecodedJWT jwt = verifier.verify(token);
            return true;
        } catch (Exception e) {//當(dāng)傳過來的token如果有問題,拋出異常
            return false;
        }
    }

    /**
     * 獲得token 中playload部分?jǐn)?shù)據(jù),按需使用
     * @param token
     * @return
     */
    public static DecodedJWT getTokenInfo(String token){
        return JWT.require(Algorithm.HMAC256("ZCEQIUBFKSJBFJH2020BQWE")).build().verify(token);
    }

}

3. 服務(wù)器返回這個(gè) jwt 給瀏覽器;

4. 瀏覽器將該 jwt 串在請(qǐng)求頭中像服務(wù)器發(fā)送請(qǐng)求;

5. 服務(wù)器驗(yàn)證該 jwt;

6. 返回響應(yīng)的資源給瀏覽器。

由于在每次的前后端交互過程中都需要進(jìn)行token的驗(yàn)證,為了降低代碼的冗余,可以借助過濾器來幫助我們完成這個(gè)工作。

public class AdminTokenFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        String adminToken = request.getHeader("adminToken");
        boolean verify = JWTUtil.verify(adminToken);
        if(verify){
            filterChain.doFilter(servletRequest, servletResponse);
        }else {//token驗(yàn)證失敗
            servletResponse.setContentType("text/html;charset=utf-8");
            PrintWriter printWriter = servletResponse.getWriter();
            CommonResult commonResult = new CommonResult(401, "token驗(yàn)證失敗");
            ObjectMapper objectMapper = new ObjectMapper();
            String json = objectMapper.writeValueAsString(commonResult);
            printWriter.write(json);
        }
    }
}

token

1.將后端封裝好的信息發(fā)送給前端

2.前端接收后存儲(chǔ)在sessionStorage對(duì)象中

3.在后面每次發(fā)送請(qǐng)求時(shí)都將token放入請(qǐng)求頭中發(fā)送到后端進(jìn)行驗(yàn)證

4.后端在對(duì)token進(jìn)行解析

響應(yīng)攔截器

如果token驗(yàn)證失敗,后端向前端傳回一個(gè)標(biāo)識(shí)用于告訴前端token驗(yàn)證失敗

在前端main.js中添加攔截器

// 添加響應(yīng)攔截器
axios.interceptors.response.use((resp) => { //正常響應(yīng)攔截
	if (resp.data.code == 500) {
		ElementUI.Message({
			message: resp.data.message,
			type: "error"
		})
	}
	if (resp.data.code == 401) {//自定義的狀態(tài)碼
		ElementUI.Message({
			message: "token驗(yàn)證失敗",
			type: "error"
		})
		router.replace("/login");
	}
	return resp;
});

這樣每次前端進(jìn)行操作時(shí)都會(huì)先驗(yàn)證token文章來源地址http://www.zghlxwxcb.cn/news/detail-647209.html

到了這里,關(guān)于web會(huì)話跟蹤以及JWT響應(yīng)攔截機(jī)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 客戶端會(huì)話跟蹤技術(shù) Cookie 淺談

    客戶端會(huì)話跟蹤技術(shù) Cookie 淺談

    用戶打開瀏覽器,第一次訪問 Web 服務(wù)器資源時(shí),會(huì)話建立,直到有一方斷開了連接則會(huì)話結(jié)束,例如瀏覽器或者服務(wù)器斷開。在一次會(huì)話中可以包含多次的請(qǐng)求和響應(yīng)。 上述的整個(gè)過程稱為會(huì)話。 例如,當(dāng)我們?cè)跒g覽器訪問一個(gè)網(wǎng)站時(shí),瀏覽器和這個(gè)網(wǎng)站服務(wù)器就建立了一

    2024年02月03日
    瀏覽(25)
  • Web前端 ---- 【Vue3】Proxy響應(yīng)式原理

    Web前端 ---- 【Vue3】Proxy響應(yīng)式原理

    目錄 前言 安裝Vue3項(xiàng)目 安裝 Proxy 語法格式 從本文開始進(jìn)入vue3的學(xué)習(xí)。本文介紹vue3中的響應(yīng)式原理,相較于vue2中通過object.defineProperty(vue2中的響應(yīng)式)來實(shí)現(xiàn)響應(yīng)式,vue3中換成了Proxy來進(jìn)行實(shí)現(xiàn)。 相較于vue2通過vue-cli腳手架來創(chuàng)建項(xiàng)目,這里更推薦使用create-vue來創(chuàng)建vue3的

    2024年01月16日
    瀏覽(64)
  • 會(huì)話跟蹤技術(shù)學(xué)習(xí)筆記(Cookie+Session)+ HTTP學(xué)習(xí)筆記

    會(huì)話跟蹤技術(shù)學(xué)習(xí)筆記(Cookie+Session)+ HTTP學(xué)習(xí)筆記

    1.1 Cookie 1. Cookie:是一種客戶端會(huì)話技術(shù),數(shù)據(jù)會(huì)被保存在客戶端,Cookie會(huì)攜帶數(shù)據(jù)訪問服務(wù)器,用以完成一次會(huì)話內(nèi)多次請(qǐng)求間的數(shù)據(jù)共享 2. 過程:瀏覽器(客戶端)先向服務(wù)端發(fā)送請(qǐng)求,服務(wù)端會(huì)發(fā)送一個(gè)Cookie給客戶端,在此后同一次會(huì)話中,每次客戶端都會(huì)將Cookie發(fā)送

    2024年02月10日
    瀏覽(25)
  • web前端開發(fā)中的響應(yīng)式布局設(shè)計(jì)是什么意思?

    響應(yīng)式布局是指網(wǎng)頁設(shè)計(jì)和開發(fā)中的一種技術(shù)方法,旨在使網(wǎng)頁能夠在不同大小的屏幕和設(shè)備上都能良好地顯示和交互。這種方法使得網(wǎng)頁可以自動(dòng)適應(yīng)不同的屏幕尺寸,包括桌面電腦、平板電腦和手機(jī)等。 在Web前端開發(fā)中,響應(yīng)式布局通常使用CSS(層疊樣式表)來實(shí)現(xiàn)。以

    2024年02月11日
    瀏覽(33)
  • SpringBoot(九)jwt + 攔截器實(shí)現(xiàn)token驗(yàn)證

    SpringBoot(九)jwt + 攔截器實(shí)現(xiàn)token驗(yàn)證

    ? ? 前面兩篇文章的過濾器和攔截器,我們都提到過可以做諸如權(quán)限驗(yàn)證的事情。http/https是無狀態(tài)的協(xié)議,當(dāng)用戶訪問一個(gè)后端接口時(shí),如何判斷該用戶有沒有權(quán)限?當(dāng)然,可以使用賬號(hào)+密碼去驗(yàn)證。但是,如果使用賬號(hào)和密碼,需要頻繁訪問數(shù)據(jù)庫,很明顯,會(huì)帶來一些

    2024年02月04日
    瀏覽(28)
  • springBoot JWT實(shí)現(xiàn)websocket的token登錄攔截認(rèn)證

    功能:所有關(guān)于websocket的請(qǐng)求必須登錄,實(shí)現(xiàn)websocket需要登錄后才可使用,不登錄不能建立連接。 后臺(tái)spring security配置添加websocket的請(qǐng)求可以匿名訪問,關(guān)于websocket的請(qǐng)求不要認(rèn)證就可以隨意訪問,去除匿名訪問后,前端在與websocket建立鏈接無法在請(qǐng)求頭里直接加入Authoriz

    2024年02月13日
    瀏覽(29)
  • 登錄頁面jwt密鑰,過濾器,攔截器,異常處理

    需求: 用戶未登錄時(shí),訪問其他也沒面,操作添加、刪除等操作時(shí),強(qiáng)行跳轉(zhuǎn)至登錄頁面。 實(shí)現(xiàn)方法: 1.使用Cookie,登錄后后端添加一個(gè)cookie,每次頁面判斷是否有cookie, 2。使用session,原理同上,只不過session是存儲(chǔ)在服務(wù)器里的,cookie是在瀏覽器里。 3。使用jwt令牌,登

    2023年04月25日
    瀏覽(26)
  • 登錄認(rèn)證方式匯總,例如ThreadLocal+攔截器+Redis、JWT

    登錄認(rèn)證方式匯總,例如ThreadLocal+攔截器+Redis、JWT

    先講講傳統(tǒng)的登錄方式 用cookie作為媒介存放用戶憑證。 用戶登錄系統(tǒng)之后,會(huì)返回一個(gè)加密的cookie,當(dāng)用戶訪問子應(yīng)用的時(shí)候會(huì)帶上這個(gè)cookie,授權(quán)以解密cookie并進(jìn)行校驗(yàn),校驗(yàn)通過后即可登錄當(dāng)前用戶。 缺點(diǎn): Cookie不安全,Cookie是存到客戶端的,攻擊者可以偽造Cookie偽造

    2024年02月07日
    瀏覽(54)
  • 關(guān)于axios的兩種攔截方式:請(qǐng)求攔截和響應(yīng)攔截

    關(guān)于axios的兩種攔截方式:請(qǐng)求攔截和響應(yīng)攔截

    提示:這里可以添加本文要記錄的大概內(nèi)容: 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 axios.interceptors.request.use() 請(qǐng)求攔截 axios.interceptors.request.use( function ( config ) { return config }) 這個(gè)方法的參數(shù)是一個(gè)函數(shù),發(fā)送請(qǐng)求之前就會(huì)執(zhí)行這個(gè)函數(shù),函數(shù)里面的參數(shù)就是執(zhí)

    2024年01月24日
    瀏覽(26)
  • 登錄校驗(yàn)原理過程和統(tǒng)一攔截技術(shù)(Cookie、Sesstion 和JWT令牌)

    登錄校驗(yàn)原理過程和統(tǒng)一攔截技術(shù)(Cookie、Sesstion 和JWT令牌)

    問題:在未登錄情況下,我們也可以直接訪問部門管理、員工管理等功能。 由于瀏覽器與web服務(wù)器中的數(shù)據(jù)交互是通過HTTP協(xié)議的,而HTTP協(xié)議是無狀態(tài)的–即每個(gè)頁面中的請(qǐng)求和響應(yīng)都是獨(dú)立的,沒有狀態(tài)存在。 所以我們需要進(jìn)行 登錄校驗(yàn) : 每次訪問頁面的時(shí)候可以用 i

    2024年02月11日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包