为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
宝慕林4294392 2023-07-10 10:42:36
我正在尝试使用令牌来验证用户角色,但出现错误:接口转换: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()之后不起作用。
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

返回值,以及您所做的就是对值执行类型断言c.Get("user"),这就是发生错误的原因。nilnil


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

        }

    }

}


查看完整回答
反对 回复 2023-07-10
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信