Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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 在Vue中将数据从子级传递到子级_Javascript_Authentication_Vue.js_Token_Registration - Fatal编程技术网

Javascript 在Vue中将数据从子级传递到子级

Javascript 在Vue中将数据从子级传递到子级,javascript,authentication,vue.js,token,registration,Javascript,Authentication,Vue.js,Token,Registration,所以。。在我的应用程序中,在认证一章中,我有一些问题 首先,我有多个组件/路由,其中两个是register和login Register工作正常,使用我的api,作为响应,我得到一个username和account\u id,两者都存储在数据库中 当尝试登录时,在响应中我得到用户名和令牌。。现在,当我访问我的网站中只有你登录才能访问的其他路由时,我需要检测是否存在令牌。如何使其成为具有token值且其他组件可以轻松访问的全局变量?将令牌存储在cookie/localstorage中,如果使用vu

所以。。在我的应用程序中,在
认证
一章中,我有一些问题

首先,我有多个组件/路由,其中两个是
register
login

Register
工作正常,使用我的api,作为响应,我得到一个
username
account\u id
,两者都存储在数据库中


当尝试
登录时
,在响应中我得到
用户名
令牌
。。现在,当我访问我的网站中只有你登录才能访问的其他路由时,我需要检测是否存在令牌。如何使其成为具有
token
值且其他组件可以轻松访问的全局变量?

将令牌存储在cookie/localstorage中,如果使用vuex,也可以将其存储在状态中

如果您使用Axios或任何其他工具处理ajax请求,您可以在头中传递您的令牌,然后从cookie/localstorage中拾取它

state: {
   token: Cookie.getJSON('token') || null,
},
mutations: {
  setToken: (state, data) => {
    state.token = data
    Cookie.set('token', data)
  }
},
actions: {
  setToken (context, data) {
    context.commit('setToken', data.token)
  }
}

选中此选项-

您好。这个问题对于StackOverflow标准来说太广泛了,因为通常会出现一个非常具体的代码示例问题。如何处理它取决于您的设置-您使用的是Vue路由器还是VueX?等等。在较高级别上,您需要将令牌存储在Vuex存储中(如果有),或者作为全局变量。然后,在每次路由转换之前,您必须使用来检查有效令牌。您可能还需要传递您的令牌以及您可能需要发出的任何其他API请求。但是,使用哪一个更好?Cookies还是Vuex?主要区别是什么?饼干很容易使用,那么还有什么不够呢?Vuex也是这样吗?我使用cookies(以防用户刷新页面)和vuex商店(在我的SPA中使用)。我把代码放在上面的答案里。哦,看起来很简单,也很有用。谢谢你的回复。但我想确保你的代码很好,对吗?我的意思是,这种结合两者的方式提供了良好的稳定性,我不应该在开发网站的过程中遇到问题是吗?我在一个网站coversingers.com上工作,我使用了相同的代码。只需确保当您注销用户时,取消设置状态并删除cookie即可。