我有一个Vue SPA,我使用Axios处理请求,Vue Axios应用它,vuex存储令牌。但当我发送一个请求时,头授权将变成Bearer未定义或Bearer null。
流程是,通过登录,我检索一个令牌,将其保存到会话存储中,分派一个登录操作,我的vuex存储将从会话存储中设置一个处于状态的令牌。在我登录并将路由器重定向到“/”后,我想向/foo发送GET请求以及我的令牌。但这里我的代币没有定义。根据控制台日志,我知道会话存储在发送请求之前确实有令牌。
我下面的结构从这个教程由Paweljw:
Axios/Axios。js
import axios from 'axios'
export default axios.create({
baseURL: 'http://example.com/api/,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + sessionStorage.token
}
})
Axios/索引。js
import Vue from 'vue';
import VueAxios from 'vue-axios';
import axios from './axios'
Vue.use(VueAxios, axios);
export default Vue;
组件/登录。vue
onLogin(res) {
if (!res.data.token) {
return this.onLoginFailed();
}
sessionStorage.token = res.data.token;
this.$store.dispatch("login");
this.$router.replace(this.$route.query.redirect || "/");
组件/foo。vue
...
this.$http
.get("foo")
.then(res => this.doSomething(res))
.catch(() => this.doSomethingElse());
如前所述,它发送一个未定义承载的请求。我知道当axios。创建(…)正在导出会话存储。令牌为空-应用程序启动时尚未设置。这可能就是原因,但我不明白我应该如何设置它,以及其他使用相同教程的人如何没有这个问题。
非常感谢您的建议。
我怀疑本教程可能有错误-如果您在axios中设置标题。创建
然后授权
标题将获取会话存储的当前值,此时该值为未定义
。
实际上,您需要在axios中设置标题。拦截器。要求使用
-以便在执行AJAX请求时,使用sessionStorage的值填充标头。像这样的
Vue.prototype.$axios = axios.create(
{
headers:
{
'Content-Type': 'application/json'
},
baseURL: process.env.API_URL
}
);
Vue.prototype.$axios.interceptors.request.use(
config =>
{
if (store.getters.isUserLoggedin) config.headers['Authorization'] = 'Bearer ' + store.getters.user.token;
return config;
}
);
Vue.prototype.$axios.interceptors.response.use(
response => response,
error =>
{
if (error && error.response && error.response.status && error.response.status === 403)
{
store.dispatch('unsetUser');
router.push('/login');
return Promise.resolve(); // Avoid showing any errors
}
else
{
logger.error({
message: 'Error in HTTP request',
response: JSON.stringify(extractError(error)),
status: _get(error, 'response.status', 'unknown'),
url: _get(error, 'config.url', 'unknown'),
userId: store.getters.userInfo.id
});
throw error;
}
}
);
我试图建立一个类,它可以环绕。NET Google API,这样我就可以使用我以前获得的访问令牌来访问用户的Google驱动器。到目前为止,我只是试图让它工作,这样我就不需要刷新令牌(稍后会有更多)。最终目标是让某人通过我设置的web页面进行身份验证,通过直接调用Google Rest API(我将其存储在数据库中)获得访问令牌和刷新令牌。然后,他们可以请求将文件上载/下载到另一个页面上的驱动器上
我想在一个中央Antlr文件中定义公共令牌常量。这样,我就可以定义几个不同的lexer和parser,并在运行时混合和匹配它们。如果它们都共享一组共同的令牌定义,那么它们就可以正常工作。 换句话说,我想看到公共静态final int WORD=2 ,所以他们都同意“2”是一个单词。 我创建了一个名为CommonTokenDefs的文件。g4并添加了如下部分: 并包括 在我的每一个人身上。g4文件。
我在Laravel 5.8中为用户登录和注册编写了一个API。 我在Laravel 5.8中使用JWTAuth。当我在Postman上测试登录时,它生成了一个错误,未定义的变量:token。我试着为register编写API,当我测试它时,它工作得很好。根据我在网上看到的内容,我尝试向内核添加\ Illumbite \ View \ Middleware \ ShareErrorsFromSess
使用axios,我尝试为所有请求设置默认标头身份验证令牌。但默认情况下它没有被发现,并且对于任何其他api调用,“授权”没有在标头中设置。 这是一个常用文件 登录后,我像这样设置标题 但是当我调用任何其他API标头进行授权时,CountryApi.js所在的位置没有设置 Country.js是这个
我用的是角度和节点。js与Auth0一起登录。我正在使用《快速入门指南》启动API。这是我使用Auth0 API的后端。 使用Auth0通用登录登录后,我会尝试访问我的后端,查看我是否获得授权。 这是检查我是否被授权的代码。 注意,我没有传递任何东西(我想我需要传递,但Auth0指南没有告诉我)。 在检查我是否被授权后,我得到一个错误,没有找到授权令牌。不知道我在这里干什么。我的后端是否未正确连接
访问令牌类型可以用以下两种方法之一来定义:在访问令牌类型注册表中注册(按11.1节中的过程)的,或者通过使用一个唯一的绝对URI作为它的名字。 采用URI命名的类型应该限定于特定供应商的实现,它们不是普遍适用的并且特定于使用它们的资源服务器的实现细节。 所有其他类型都必须注册。类型名称必需符合type-name ANBF。如果类型定义包含了一种新的HTTP身份验证方案,该类型名称应该与该HTTP身