2017-09-08 29 views
-1

我目前正在添加JWT身份驗證到我的Go Web應用程序,我有一些擔心,當涉及到類型鑄造和自動恐慌如果失敗。我的代碼如下所示:
(c是上下文包)錯誤檢查,而類型鑄造在去

user := c.Get("user") 
token := user.(*jwt.Token) 

claims := token.Claims.(jwt.MapClaims) 

fmt.Println("Username: ", claims["name"], "User ID: ", claims["jti"]) 

正如你可以看到我使用多條線路上的類型轉換,但如果操作失敗,它會產生恐慌,最終導致服務器崩潰。在這種情況下是否有任何可能的方法來檢查錯誤?
我對Go的web開發很陌生,所以我很抱歉,所有幫助表示感謝!

+2

[這是在圍棋遊覽。](https://tour.golang.org/methods/15) – Adrian

回答

5

類型斷言(somevar.(sometype))返回(sometype, bool),所以你可以檢查布爾。這是:

token, ok := user.(*jwt.Token) 
if !ok { 
    // handle the fail case. `token` is nil here. 
}