请求令牌时获取 nil 而不是 *jwt.Token

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


接口转换:interface {} 为 nil,而不是 *jwt.Token


我做了类似的请求用户 ID 的操作并且它有效,但在这里我似乎无法获取令牌。


代码:


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()令牌,但c.Get()之后不起作用。


宝慕林4294392
浏览 103回答 1
1回答

狐的传说

返回值,以及您所做的就是对值执行类型断言c.Get("user"),这就是发生错误的原因。nilnilc.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.")        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go