Javascript 登录后设置承载令牌
我已经使用Axis设置了一个基本服务,并在其中设置了一个承载令牌,但当它调用用户API时,由于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
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')
},
})