如何从 go Fiber 中的本地上下文中提取值

Bar*_*rty 2 go go-fiber

我已设法使用本地上下文通过自定义中间件设置数据库查询结果。我试图了解如何对用户进行身份验证,然后从数据库中提取其详细信息并将其注入上下文中。这已经完成了。

路由上最后一个方法的本地数据实际上是一个接口,我想从之前的身份验证中间件设置的数据中提取字段。如何将此接口类型处理为某种形式(如结构或 json),以便获取用于执行某些逻辑的字段和值?

user := c.Locals("user") 
fmt.Println("checking for locals",user)
Run Code Online (Sandbox Code Playgroud)

从上面的用户是struct user

 {
Name string `json:"name"`
Emain string `json:"email"`
ID string `json:"id"`
Password string `json:"password"`
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到姓名和电子邮件?

Bar*_*rty 5

因此,在深入研究光纤文档并阅读有关接口(尤其是空接口)之后,我认为我有一个解决方案,但需要纠正

我看到可以将接口转换为具体类型。就我而言,我会采用 ofc.Locals("user")类型var user interface{}

然后将其转换为将指针传递给用户模型的结构,如下所示

user := c.Locals("user") 
 details, ok :=user.(*models.User)
 fmt.Println("checking for locals -----------",details.Name)
Run Code Online (Sandbox Code Playgroud)