gpt4 book ai didi

go - 请求 token 时获取 nil 而不是 *jwt.Token

转载 作者:数据小太阳 更新时间:2023-10-29 03:18:42 24 4
gpt4 key购买 nike

我正在尝试使用 token 来验证用户角色,但出现错误:

interface conversion: interface {} is nil, not *jwt.Token

我做了类似的事情来请求用户 ID,它起作用了,但在这里我似乎无法获得 token 。

代码:

func AdminRoutes(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
u := c.Get("user").(*jwt.Token)
claims := u.Claims.(jwt.MapClaims)
for _, item := range routes[claims["role"].(string)] {
if c.Request().RequestURI == item && claims["role"] != "admin" {
return c.JSON(http.StatusUnauthorized, "Role not suitable for function.")
}
}
return next(c)
}
}

我尝试过 c.Set() token ,但 c.Get() 之后不起作用。

最佳答案

c.Get("user") 返回 nil 值,而您所做的是对 nil 值执行类型断言,它是错误发生的原因。

我建议在断言之前对 c.Get() 进行一些检查。

if temp := c.Get("user"); temp != nil {
u := temp.(*jwt.Token)
claims := u.Claims.(jwt.MapClaims)
for _, item := range routes[claims["role"].(string)] {
if c.Request().RequestURI == item && claims["role"] != "admin" {
return c.JSON(http.StatusUnauthorized, "Role not suitable for function.")
}
}
}

关于go - 请求 token 时获取 nil 而不是 *jwt.Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com