Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 登录后设置承载令牌_Javascript_Axios - Fatal编程技术网

Javascript 登录后设置承载令牌

Javascript 登录后设置承载令牌,javascript,axios,Javascript,Axios,我已经使用Axis设置了一个基本服务,并在其中设置了一个承载令牌,但当它调用用户API时,由于null令牌,我获得了未经授权的访问,但我已经在本地存储中设置了令牌 基地 在login.vue中 let res = await loginService.checkLogin(usrname,password) this.loader = false localStorage.setItem('usertoken',res.data.data.token) 用户 import baseSer

我已经使用Axis设置了一个基本服务,并在其中设置了一个承载令牌,但当它调用用户API时,由于
null
令牌,我获得了未经授权的访问,但我已经在本地存储中设置了令牌

基地

在login.vue中

 let res = await loginService.checkLogin(usrname,password)
 this.loader = false
 localStorage.setItem('usertoken',res.data.data.token)
用户

import baseService from "./baseService";

export default {
    fetchUsers(){
        return baseService.post( `${'user/get-all-users'}`,{
            limit:1000
        }).then(function(response){
            return response
        }).catch(function(error){
            return error.response
        })
    },
使用
“授权”

或者你也可以使用

axios.defaults.headers.common['Authorization'] = 'Bearer '+token;

如果在文件的开头设置了令牌变量,它将采用原始值。因此,您的usertoken不是被动的,它不会从localstorage获取新值。我用我的应用程序来解决我面临的同样问题

import axios from "axios";

const baseURL = process.env.VUE_APP_BASE_API;

export default axios.create({
    baseURL,
    headers: {
        'Content-Type' : 'application/json',
        Authorization  : 'Bearer '+localStorage.getItem('usertoken')
    },
})

请检查浏览器中的“网络”选项卡以调试请求。检查请求标头是否具有预期的令牌我已尝试过此操作,但登录令牌为空后,如果我刷新,则其工作正常只需删除常量并使用let即可
let token=localStorage.getItem('usertoken')因为一旦应用程序加载,值就被设置为空,所以令牌的值不会因为使用const而改变。重新加载后,由于localstorage具有该值,因此token const获取该值并工作。是的,当用户首次加载应用程序并注销时,您需要将
usertoken
设置为空。因为本地存储不是自动清除的,不像会话存储,我们需要手动清除。现在,在清除后,请在登录后重新设置令牌。所以localstorage总是有最新的令牌。我在注销后清除了local storage,但仍然需要使用旧的valueFirst remove const,并将其更改为var或let。否则注销将不起作用。上面的代码给出了一个错误loginService.js?d28e:5 Uncaught(in promise)TypeError:baseService\uuu WEBPACK\u IMPORTED\u MODULE\u 0\uuuu.default.post不是Object.checkLogin(loginService.js?d28e:5)上的函数,所以我的axios正在返回一个带有返回值的函数。更改了itok,但这是对您以前情况的改进,因为我对刷新发生的位置有点困惑。登录后您不会重定向您的路由吗?我在登录后重定向到仪表板,但当我单击用户时,它显示空令牌
axios.defaults.headers.common['Authorization'] = 'Bearer '+token;
import axios from "axios";

const baseURL = process.env.VUE_APP_BASE_API;

export default axios.create({
    baseURL,
    headers: {
        'Content-Type' : 'application/json',
        Authorization  : 'Bearer '+localStorage.getItem('usertoken')
    },
})