如何在login.vue中添加标题?

2023-12-25

如何更新 apolloProvider 的标头?

请查看 nativescript-vue 应用程序存储库:

https://github.com/kaanguru/vue-apollo-login https://github.com/kaanguru/vue-apollo-login

我无法正确解释,所以请查看该应用程序。我不知道如何更新 appolloClient 标头。

应用程序存储库有自己的注释和指令。您可以轻松安装和查看。

当前代码结构:

Post请求提交用户的标识符和密码凭据以进行身份​​验证和获取令牌在登录页面。

Apollo 需要将 jwt 令牌放入 Authorization 标头中。

  • Main.js:如果有 JWT 以标头开头,则启动 apollo 客户端

    • 如果没有 JWT 则转到登录

    • 如果有智威汤逊,请转到鸟类列表

  • 登录:从服务器获取jwt并将其写入本地存储

    • 前往鸟类列表(不显示数据,因为apollo在主js中初始化)

import ApolloClient from 'apollo-boost'
import VueApollo from 'vue-apollo'

Vue.use(VueApollo)

const apolloClient = new ApolloClient({
  uri: 'http://sebapi.com/graphql',

// HEADERS WORK FINE IF TOKEN WAS IN MAIN
//   headers: {
//     authorization: `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNTg2MzU2NzM2LCJleHAiOjE1ODg5NDg3MzZ9.wpyhPTWuqxrDgezDXJqIOaAIaocpM8Ehd3BhQUWKK5Q`,
// }

})
const apolloProvider = new VueApollo({
  defaultClient: apolloClient,
})

登录.VUE

.then(
          (response) => {
            const result = response.content.toJSON();
            console.log("Result from Server: ", result);
            const token = result.jwt;

            // HOW TO ADD HEADERS TO APOLLOCLIENT this.$apollo.provider.defaultClient

            // this.$apollo.provider.defaultClient({
            //   request: (operation) => {
            //     operation.setContext({
            //       headers: {
            //         authorization: `Bearer ${result.jwt}` ,
            //       },
            //     });
            //   },
            // });

          },

感谢您的关注。

NOTE: 请评论了解更多详情。 sebapi.com 后端是一个 Strapi graphql 服务器。

相关文档:

阿波罗认证 https://www.apollographql.com/docs/react/networking/authentication/

Apollo链接组成 https://www.apollographql.com/docs/link/composition/

Vue apolloProvider 用法 https://vue-apollo.netlify.com/guide/apollo/#apollo


问题是您需要使用 ApolloLink 才能将其用于所有请求。你用的方法是行不通的。

你必须使用中间件apollo-link-context为了达成这个。

As per Apollo-link-context 文档 https://www.apollographql.com/docs/link/links/context/

apollo-link-context:用于设置操作的上下文,供链下游的其他链接使用。

The setContextfunction 接受一个返回对象的函数或返回一个对象的承诺来设置请求的新上下文。 将以下代码添加到app.js并修改一些更改并检查。

import { setContext } from 'apollo-link-context'

const authLink = setContext((_, { headers }) => {
    // get the authentication token from ApplicationSettings if it exists
    const token = ApplicationSettings.getString("token");

    // return the headers to the context so HTTP link can read them
    return {
        headers: {
            ...headers,
            authorization: token ? `Bearer ${token}` : null
        }
    }
})

// update apollo client as below
const apolloClient = new ApolloClient({
  link: authLink.concat(httpLink),
  cache: new InMemoryCache() // If you want to use then 
})

Login.vue 中的更改

.then(
    (response) => {
    const result = response.content.toJSON();
    console.log("Result from Server: ", result);
    const token = result.jwt;
    // Set token using setString
    ApplicationSettings.setString("token", result.jwt);
},

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在login.vue中添加标题? 的相关文章

随机推荐

  • 如何在流星中响应式聚合 mongodb

    我是流星新手 我建立了发布 订阅的概念 我在反应式执行聚合时遇到以下错误 客户端代码 import Template from meteor templating import ReactiveVar from meteor reactiv
  • 在我的 virtualenv 中,我需要对所有命令使用 sudo

    我设置了一个virtualenv 这是有效的 但由于某种原因我需要使用sudo对于像这样简单的命令mkdir 显然我做错了什么 知道它可能是什么吗 Thanks 检查目录权限和所有者并给出 sudo chown R me me virtua
  • 模拟无法与 RSpec 和 Devise 配合使用

    我目前正在使用 RSpec 2 开发 Rails 3 Web 应用程序 并且我们使用 Devise 进行身份验证 我们的一个 很快还有许多 控制器要求用户登录 我知道 Devise 提供了sign in测试助手 但它可以与 RSpec 或
  • 在JPanel中调用setEnabled(false)的原因

    我现在在 Swing 上工作了一段时间 但在实践中从未遇到过需要打电话的情况setEnabled false in JPanel 尽管如此 我有时会在一些复杂的图形用户界面中看到这样的代码 但我真的不明白为什么有人想用它 所以 请给我一些现
  • 使用 React Router v4 / v5 的嵌套路由

    我目前正在努力使用 React Router v4 来嵌套路由 最接近的例子是路由配置React Router v4 文档 https react router now sh 我想将我的应用程序分成两个不同的部分 前端和管理区域 我在想这样
  • 按特定顺序执行测试套件

    我正在使用 maven failsafe 插件来触发 testng 套件 其配置类似于
  • 如何将 `getOrWaitUntilNonEmpty` 作为单个衬垫执行?

    我有一个高级代码结构 如下所示 val block gt Option Seq String val matches block get toArray 问题是这段代码可能会失败 即 get being None取决于时间 例如我是页 sc
  • “User”对象没有属性“get”

    我正在尝试构建一个ModelForm从这个解决方案here https stackoverflow com questions 862522 django populate user id when saving a model 但是我收到
  • 使用 pytest-django 对现有数据库运行测试

    有谁知道如何使用 pytest django 针对现有 例如生产 数据库运行 Django 测试 我知道 一般来说 这不是单元测试应该做的事情 但就我而言 我在 Heroku 上运行测试 默认情况下 Django 创建一个新的测试数据库 但
  • 在没有代理的 MS SQL 中实现每分钟事件

    我希望我的存储过程每分钟执行一次 但我无法访问 SQL Server 代理 使用 Windows 调度程序和 sqlcmd exe 将是最简单的
  • GitHub API (v3):按创建日期排序标签

    我在使用 GitHub API 时遇到了问题 我需要在单个标签之后创建的所有标签的列表 执行此操作的唯一方法是按日期比较标签 但是 API 的结果不是按日期排序的 API 的结果 rails 存储库示例 网络界面的结果 我所期望的是按日期排
  • PHP 等于 foreach 循环中的箭头运算符[重复]

    这个问题在这里已经有答案了 可能的重复 foreach ex as k gt v 中的 k gt v 是什么意思 https stackoverflow com questions 4758791 what does k v in fore
  • 追加 Blob 数据

    是否有一个函数可以附加 blob 数据JavaScript我目前使用以下方法 var bb new Blob Hello world 2 type text plain bb new Blob bb another data type te
  • 将blur.js 与angularjs 一起使用

    我正在尝试在 div 上制作带有角度的模糊背景效果 如上图所示 为此我正在使用blur js http blurjs com 使用 jquery 一切都可以正常工作 但真正的问题是使用 angularjs 可以实现这一点 最好的方法是什么
  • WPF 复选框:检查更改的处理

    在 WPF 数据绑定中 我可以将 IsChecked 属性绑定到某些数据 例如用户设置 但我需要处理 CheckChanged 事件 我知道我可以单独处理Checked 未选中事件 但是当这个值改变时有什么方法可以得到通知吗
  • data.table:lapply 具有多列输出的函数

    我正在使用一个函数smean cl normal来自 Hmisc 包 它返回一个具有 3 个值的向量 均值以及 CI 下限和上限 当我在一个data table对于 2 个组 我获得 2 列和 6 行 有没有办法获得与 2 个组相对应的两行
  • 在 TensorFlow 中在 NHWC 和 NCHW 之间转换

    将张量从 NHWC 格式转换为 NCHW 格式 反之亦然 的最佳方法是什么 是否有专门执行此操作的操作 或者我需要使用拆分 连接类型操作的某种组合 您所需要做的就是将维度从 NHWC 排列到 NCHW 或相反 每个字母的含义可能有助于理解
  • C++11 中弱类型枚举的基础类型

    C 11 引入了强类型枚举 语法如下enum class 它们与整数类型不兼容 需要显式转换才能获取其数值 C 11 还引入了为弱类型枚举指定存储类的能力 格式如下enum name type 到这里为止都还好 但看起来即使弱类型枚举具有给
  • Boost 1.55 不适用于 Visual Studio 2013

    我已经正确编译了 boost 二进制文件并遵循了所有说明 但是我收到了很多错误 我不知道为什么 Here is my include setup 这是我用来测试 boost 的代码 include
  • 如何在login.vue中添加标题?

    如何更新 apolloProvider 的标头 请查看 nativescript vue 应用程序存储库 https github com kaanguru vue apollo login https github com kaangur