2016-09-15 27 views
2

我正在使用「github.com/dgrijalva/jwt-go」,並且能夠向我的前端發送令牌,我想知道如何檢索令牌從前端發送,以便我可以驗證發送的令牌是否有效,如果是,則會傳遞受保護的資源。如何提取和驗證從前端發送的令牌在golang

下面是從前端的JavaScript發送令牌......

headers: { 
     'Authorization':'Bearer' + localStorage.getItem('id_token') 
    } 

下面是代碼發送令牌

token := jwt.New(jwt.GetSigningMethod("HS256")) 
    claims := make(jwt.MapClaims) 
    claims["userName"] = loginRequest.UserName 
    claims["exp"] = time.Now().Add(time.Minute * 60).Unix() 
    token.Claims = claims 
    tokenString, err := token.SignedString([]byte(SecretKey)) 
    tokenByte, err := json.Marshal(data) 
    w.WriteHeader(201) 
    w.Write(tokenByte) 

這裏是驗證令牌

func VerifyToken(r *http.Request) bool { 

    reqToken := r.Header.Get("Authorization") 
    token, err := jwt.Parse(reqToken, func(t *jwt.Token) (interface{}, error) { 
     return []byte(SecretKey), nil 
    }) 
    if err == nil && token.Valid { 
     fmt.Println("valid token") 
     return true 
    } else { 
     fmt.Println("invalid token") 
     return false 
    } 

} 
代碼

我越來越令牌作爲回報,我的猜測是我已發送持有人我認爲它可能需要解析,如果是這樣的話?

+1

感謝您的這個問題。不確定如何驗證令牌。 –

回答

2

服務器需要一個令牌字符串,不即

'Authorization':'Bearer' + localStorage.getItem('id_token') 

發送請求時,Web服務器在我們需要的Web服務器我在標題中添加承載字符串令牌串在我的情況下添加字符串只拆分不帶持票人的有效標記字符串

reqToken := r.Header.Get("Authorization") 
splitToken := strings.Split(reqToken, "Bearer") 
reqToken = splitToken[1] 

因此,它成爲無nil的有效標記。

相關問題