jwt-go

/*
 * @,@Author: ,: lxcos
 * @,@Date: ,: 2020-10-31 17:36:39
 */
package main

import (
    "errors"
    "fmt"
    "github.com/dgrijalva/jwt-go"
    log "github.com/sirupsen/logrus"
    "time"
)

func init() {
    customFormatter := new(log.TextFormatter)
    customFormatter.TimestampFormat = "2006-01-02 15:04:05"
    customFormatter.FullTimestamp = true
    log.SetLevel(log.DebugLevel)
    log.SetFormatter(customFormatter)
    log.SetReportCaller(true)
    log.Info("init logger success!")
}

// 自定義claims丰泊,添加一些內(nèi)容
type csclaim struct {
    Id       uint32 `json:"id"`
    Name     string `json:"name"`
    jwt.StandardClaims
}

func creToken() (string, error) {
    // 標(biāo)準(zhǔn)模式
    //signkey := []byte("AllYourBase")  // Create the Claims
    //claims := &jwt.StandardClaims{ExpiresAt: 15000, Issuer: "test"}
    //at := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
    //token, err := at.SignedString(signkey)
    //return token, err

    // 自定義模式
    signkey := []byte("AllYourBase")  // Create the Claims
    claims := csclaim{1,
        "chenfeng",
        jwt.StandardClaims{
            ExpiresAt: time.Now().Add(90*time.Second).Unix(),  // 過期時(shí)間,必須設(shè)置
            Issuer: "db.com",                                  // 可不必設(shè)置县习,也可以填充用戶名特愿,
        },
    }
    at := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
    token, err := at.SignedString(signkey)
    return token, err
}


func ParseToken(tokenString string, secret []byte) (jwt.MapClaims, error) {
    token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
        if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
            return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
        }
        return secret, nil
    })
    if err != nil {
        return nil, err
    }
    if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
        return claims, nil
    } else {
        return nil, errors.New("token is unValid")
    }
}

func main() {
    cms, err := ParseToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwibmFtZSI6ImNoZW5mZW5nIiwiZXhwIjoxNjA1NTE0ODA2LCJpc3MiOiJkYi5jb20ifQ.lr7BK0caA9sW2jpfmXiA5e2yhCuBx93efW6j5J1APaY", []byte("AllYourBase"))
    if err != nil {
        if err.Error() == "Token is expired" {
            log.Warning("token 過期蟆盐,重新認(rèn)證")
            tk, _ := creToken()
            log.Info(tk)
            return
        } else {
            log.Error(err.Error())
            return
        }
    }
    log.Info(cms)
    log.Info(cms["id"])
    log.Info(cms["name"])
    log.Info(cms["exp"].(float64))
}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奋姿,更是在濱河造成了極大的恐慌,老刑警劉巖素标,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件称诗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡头遭,警方通過查閱死者的電腦和手機(jī)寓免,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門癣诱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人袜香,你說我怎么就攤上這事撕予。” “怎么了困鸥?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵嗅蔬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我疾就,道長(zhǎng)澜术,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任猬腰,我火速辦了婚禮鸟废,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姑荷。我一直安慰自己盒延,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布鼠冕。 她就那樣靜靜地躺著添寺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪懈费。 梳的紋絲不亂的頭發(fā)上计露,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音憎乙,去河邊找鬼票罐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泞边,可吹牛的內(nèi)容都是我干的该押。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼阵谚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蚕礼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起梢什,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闻牡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绳矩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罩润,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年翼馆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了割以。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片金度。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖严沥,靈堂內(nèi)的尸體忽然破棺而出猜极,到底是詐尸還是另有隱情,我是刑警寧澤消玄,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布跟伏,位于F島的核電站,受9級(jí)特大地震影響翩瓜,放射性物質(zhì)發(fā)生泄漏受扳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一兔跌、第九天 我趴在偏房一處隱蔽的房頂上張望勘高。 院中可真熱鬧,春花似錦坟桅、人聲如沸华望。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赖舟。三九已至,卻和暖如春夸楣,著一層夾襖步出監(jiān)牢的瞬間宾抓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工裕偿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洞慎,地道東北人痛单。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓嘿棘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親旭绒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸟妙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容