我正在尝试使用令牌来验证用户角色,但出现错误:接口转换: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.")
}
}
}
- 1 回答
- 0 关注
- 101 浏览
添加回答
举报
0/150
提交
取消