内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

springboot+jwt實(shí)現(xiàn)刷新token的示例分析

小編給大家分享一下springboot+jwt實(shí)現(xiàn)刷新token的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、靖西網(wǎng)站維護(hù)、網(wǎng)站推廣。

springboot是什么

springboot一種全新的編程規(guī)范,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程,SpringBoot也是一個服務(wù)于框架的框架,服務(wù)范圍是簡化配置文件。

1:這種方式為在線刷新,比方說設(shè)定的token有效期為30min,那么每次訪問資源時,都會在攔截器中去判斷一下token是否過期,如果沒有過期就刷新token的時間為30min,反之則會重新登錄,需要注意的是這種方式我是在登錄以后就將token存在了redis

//登錄方法中將token存在redis
    String token = JwtUtil.sign(userName,user.getId());
    redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, token,UserConstants.TOKEN_EXPIRE_TIME);
    Map map=new HashMap();
    map.put("token", token);
    return Result.success(map);
    //在攔截器中獲取token,并判斷token的有效期
    String token = req.getHeader(UserConstants.ACCESS_TOKEN);
    if (Strings.isNullOrEmpty(token)) {
      return false;
    }
    Object reqToken=redisUtil.get(UserConstants.PREFIX_USER_TOKEN+token);
    if (ObjectUtils.isEmpty(reqToken)) {
      return false;
    }
    if(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN+token) <1){
      return false;
    }
    redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, token,UserConstants.TOKEN_EXPIRE_TIME);
    return true;

2.這種方式為免密登錄,也就是說,登錄一次后就不用再通過賬號密碼登錄,思路就是在生成token時候,在生成一個refToken來刷新,比如說我的token設(shè)置的有效期為5分鐘,refToken設(shè)置的為一周,那么在請求時候則判斷token是否過期,如果已經(jīng)過期 就判斷refToken的時間有沒有過期,沒有過期則生成一個新的token給前端,同時重置這個refToken(看你自己),如果refToken已經(jīng)過期則重新登錄,需要注意的是這次生成的token并不存在redis中,而是將refToken存在redis。

// 生成token
    String token = JwtUtil.sign(userName,user.getId());
    //刷新token,免密登陸
    String refToken=UUID.randomUUID().toString().replaceAll("-","");
    redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, refToken,UserConstants.TOKEN_EXPIRE_TIME);
    Map map=new HashMap();
    map.put("token", token);
    map.put("refToken", refToken);
    return Result.success(map);

    //這里在攔截其中校驗token,如果校驗失敗,則判斷redis的refToken是否過期
    if (!JwtUtil.verify(token)) {
      if(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN+token)>=1){
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        String newRefToken=UUID.randomUUID().toString().replaceAll("-","");
        Integer userId=Integer.parseInt(JwtUtil.getUserId(token));
        User user=userService.selectOne(userId);
        String newToken=JwtUtil.sign(user.getUserName(),user.getId());
        httpServletResponse.setHeader("newToken",newToken);
        httpServletResponse.setHeader("newRefToken",newRefToken);
        return true;
      }else{
        return false;
      }
    }

3.貼一下我在postMan中的測試結(jié)果:

這里是登錄后返回的token和refToken:

springboot+jwt實(shí)現(xiàn)刷新token的示例分析

這里是登陸成功之后的顯示:

springboot+jwt實(shí)現(xiàn)刷新token的示例分析

這里是token過期后,refToken刷新的token:

springboot+jwt實(shí)現(xiàn)刷新token的示例分析

這里是設(shè)定的refToken過期后在訪問的顯示:

springboot+jwt實(shí)現(xiàn)刷新token的示例分析

以上是“springboot+jwt實(shí)現(xiàn)刷新token的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文標(biāo)題:springboot+jwt實(shí)現(xiàn)刷新token的示例分析
文章起源:http://www.rwnh.cn/article14/ippcge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、標(biāo)簽優(yōu)化商城網(wǎng)站、網(wǎng)站排名ChatGPT、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
连云港市| 清苑县| 茌平县| 宁远县| 庆安县| 汾西县| 拜泉县| 彰化市| 清镇市| 阜新市| 康保县| 田东县| 双桥区| 荆州市| 全南县| 焦作市| 浦北县| 商南县| 紫阳县| 固阳县| 绥江县| 盐边县| 阿坝| 祁连县| 福泉市| 开鲁县| 嘉祥县| 昌平区| 和硕县| 青岛市| 浠水县| 集贤县| 泗洪县| 河北省| 泉州市| 武汉市| 迭部县| 潼南县| 密云县| 沙坪坝区| 宁强县|