Как извлечь значения из локального контекста в gofiber

# #go #go-fiber

Вопрос:

Мне удалось использовать локальный контекст для настройки результатов запросов к базе данных с помощью пользовательского промежуточного программного обеспечения. Я пытаюсь понять, как я могу аутентифицировать пользователя, затем извлечь его данные из базы данных и ввести их в контекст. Это было сделано.

Локальные данные о конечном методе на маршруте на самом деле являются интерфейсом, и я хотел бы извлечь поля из данных, которые я установил в предыдущем промежуточном программном обеспечении аутентификации. Как я могу работать с этим типом интерфейса в какой-либо форме, такой как структура или json, чтобы я мог получать поля и значения для выполнения некоторой логики?

 user := c.Locals("user")  fmt.Println("checking for locals",user)  

Сверху пользователь имеет структуру пользователя

 { Name string `json:"name"` Emain string `json:"email"` ID string `json:"id"` Password string `json:"password"` }  

Как я могу узнать имя и адрес электронной почты ?

Ответ №1:

Поэтому, покопавшись в документах fiber и прочитав об интерфейсах и особенно пустых интерфейсах, я думаю, что у меня есть решение, но его нужно исправить

Я видел, что можно привести интерфейс к конкретному типу. В моем случае я бы выбрал c.Locals("user") тип var user interface{}

затем приведите его к структуре, передав указатель на пользовательскую модель следующим образом

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