我目前正在为我的Go网络应用添加JWT身份验证,当涉及到go中的类型转换和自动恐慌(如果它失败)时我有一些担忧。我的代码如下所示:
(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开发很陌生,所以我很抱歉,感谢所有的帮助!
答案 0 :(得分:5)
类型断言(somevar.(sometype)
)返回(sometype, bool)
,因此您可以检查bool。惯用的是:
token, ok := user.(*jwt.Token)
if !ok {
// handle the fail case. `token` is nil here.
}