我的项目使用vuex、axios、vue cookies和JWTs。我有一个叫做api的文件。js导入到我的主vue js、api中。下面是js代码;
import axios from 'axios'
import Vue from 'vue'
import { store } from "@/store";
export default axios.create({
baseURL: store.state.endpoints.baseUrl,
headers: {
Authorization: `JWT ${Vue.$cookies.get('token')}`,
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
当我通过登录页面登录时,一切都显示成功。在检查器中,cookie“令牌”值正确地用新令牌更新,Vuex更新以显示用户已认证,路由器将我重定向到主页。一旦在主页上,如果我试图导航到一个进行任何需要身份验证的调用的页面,在标题中它会传递“JWT空”而不是cookie中的令牌,并且失败,我最终会进入一个成功登录的永久循环,但是不能去任何地方。
如果我在做任何其他事情之前登录并刷新页面,那么一切都会按预期工作,JWT不再为空。看来,该api。这个问题顶部的js代码没有在每次调用cookie时正确地从cookie中提取令牌,而只是在页面刷新时,这是缓存的还是我需要在登录后以某种方式重新加载此导入?
作为参考,我的登录页面中的代码片段显示了登录后数据是如何更新的;
api.post(this.$store.state.endpoints.obtainJWT, payload)
.then((response) => {
console.log("Token - "+response.data.token);
console.log("Profile - "+response.data.user);
this.$cookies.set('token', response.data.token);
this.$store.commit("setAuthUser",
{authUser: response.data, isAuthenticated: true})
})
.then(() => this.$router.push({path: '/'}))
.catch((error) => {
console.log("Error!");
console.log(error);
console.debug(error);
console.dir(error);
})
以及一个api调用的示例,如果在刷新页面之前访问,则该调用包含JWT null;
import api from "../api.js";
...
api.get("/data_full/" + id)
.then((response) => {
this.title = response.data.title;
})
在我main.js项目中,api.js导入;
...
import api from './api.js'
...
Vue.$http = api;
在发布后阅读我的问题时,我意识到问题不是get(‘token’)调用,而是我正在创建一个Axios实例,在将令牌保存到cookie后,该实例显然没有被重新创建。
我现在已经将与授权头相关的代码移出api。js和进入主界面。js作为拦截器。这样,每次进行Axios调用时都会提取cookie中的令牌值。这解决了我的问题。更新了main中的代码。下面是js;
...
api.interceptors.response.use(
config => {
const token = Vue.$cookies.get('token');
if ( token != null ) {
config.headers.Authorization = `JWT ${token}`;
}
return config
},
...
发生重定向时,google将重定向到我们的url https://myurl.com/callback?code=somecode 第三步: 反应回来了: HTTP 400错误请求 有人能帮我解决这个问题吗?谢谢!
我试图生成一个access_token和refresh_token访问谷歌电子表格API。我使用了APIhttps://www.googleapis.com/oauth2/v3/token?code=
我有一个计划的WebJob,每天运行,检查数据库中所有用户的密码过期日期。如果密码到期日是今天,它将生成密码重置令牌并通过电子邮件发送给用户。然后用户单击电子邮件中的url,并被带到一个网站,在那里输入新密码。 我设法在我的WebWork中生成一个令牌,并通过电子邮件发送。但是,通过我的Asp重置密码时。NET网站我得到无效令牌。我不明白为什么。我假设它一定与我的WebWork中的令牌提供商有关。
我在自己的Web API上使用Oauth2,在Web应用程序上使用ASP.NET C#来使用该API。在我的web应用程序上,我正在进行HttpWebRequests。当我的访问令牌过期时,我调用一个方法“refreshToken”,该方法发出请求以获取新的访问令牌。这工作很好,没有问题...除了我得到的响应包含一个新的刷新令牌???我在等新的访问令牌。我甚至认为在没有再次传递凭据的情况下这是不可
对于本地帐户,strapi成功验证本地jwt。但是,当我使用Google provider登录时,/connect/Google/callback会重定向到带有access\u令牌、raw[access\u令牌)、raw[id\u令牌等的主页。。。我已经尝试了所有这些令牌,strapi返回所有无效的令牌。 此外,我在用户(内容类型)中没有看到我与google登录的帐户。 我错过什么了吗?
两天前,我们的贝宝整合出了问题。不幸的是,尝试联系贝宝支持已经证明没有帮助(没有回复在2天),所以我会尝试我的运气,在这里。 谢谢!