gpt4 book ai didi

authentication - nuxtjs与后端API之间的授权

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:22 25 4
gpt4 key购买 nike

我有一个 Vuejs使用 Nuxtjs 创建的应用程序.我也在使用 Django作为后端服务器,我制作了一个 API 来与后端服务器 (Django) 和前端应用程序 (Vuejs/Nuxtjs) 进行交互。并且任何与 API 相关的提取都在页面的 AsyncData 函数 中完成,以使用 axios 在服务器端呈现数据。 .此外,我正在使用 json web token 身份验证,API 在成功登录后生成一个存储在 cookie 中的 jwt token 。因此在后端,它将始终检查请求的 token 授权 header 。如果请求来自登录用户(授权 token ),则返回经过身份验证的 json 数据,否则返回未经过身份验证的数据。

问题:

当用户导航到应用程序时,我想检查用户是否已通过身份验证。如果用户已通过身份验证,则呈现经过身份验证的页面。如果不是,则显示未经身份验证的页面。

我的想法:

当通过 AsyncData 函数 从应用程序中完成提取时,我会检查 cookie 是否有任何值。如果存在,则发送带有请求授权 header 的 token 。但是,由于页面将首先在服务器上呈现,而不是在客户端(cookie 实际所在的位置)呈现,因此它永远不会找到授权 token 。

如何检查用户是否已登录,以便我可以分别从 API 获取经过身份验证和未经过身份验证的数据?

更新

当我成功登录时(发布授权电子邮件和密码),我会收到一个带有 token 的 json 响应,我在 cookie 中设置的 token 如下:

this.$cookie.set('my_auth_token', this.token, {expires: 15})

如何检索客户端 cookie 并进入 nuxt 服务器以进行服务器端渲染?

最佳答案

Cookies are exposed in the (Express) Nuxt server through middleware.

具体来说,它们可以从 req.headers.cookie 属性中读取。您可以在 Nuxt documentation 中看到一个示例实现.

关于您的实现:使用 Node 从您的 API 获取特权数据似乎是将 session 处理委托(delegate)给该单一服务(而不是两者)并为您的用户提供 SSR 的理想方式。

如果您选择在 Django 服务上实现 session 处理,那么您需要通过将 cookie 传递到您的 axios 请求 header 来“转发”您的 cookie。

关于authentication - nuxtjs与后端API之间的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47320394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com