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

I'm trying to a the token to verify the user role but I get an error:

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

I did something similar requesting the user ID and it worked but here I can't seem to get the token.

Code:

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)
    }
}

I've tried to c.Set() the token but c.Get() doesn't work after.

The c.Get("user") returns nil value, and what you did was performing type assertion on nil value, it's the reason why the error occurs.

I suggest to put some checking on c.Get() before asserting it.

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.")
        }
    }
}