保持登录用户信息

时间:2017-04-18 10:13:35

标签: vue.js laravel-passport

我设法用laravel护照登录。我有令牌,很棒。但我想保持登录用户信息,名称,头像等。

我的登录程序获得了oauth令牌。在仪表板组件中,我对用户数据进行api调用。

我应该将它们保存在全局Vue对象中还是使用Vuex?这样安全吗?

2 个答案:

答案 0 :(得分:3)

您可能会考虑的一些选项

  • 将数据存储在Cookie中
  • 使用localStorage
  • 将所有内容保留在根vue实例中
  • 将所有内容保存在包装vue组件中

我的建议是存储身份验证令牌 - 这是成功调用后端所需的 - 在cookie中。这样,您可以通过发送的每个请求轻松访问它。

要存储我建议的用户信息,要么创建包装组件,要么使用root vue实例。以下示例应该清除这一点。

包装主页组件(内嵌模板)

data: function() {
  return { userinfo: {} }
},

created: function() {
  // load your user info
}

然后在index.html / main视图中使用它

<body>
  <home inline-template>
    <!-- any stuff here -->

    <!-- pass the user prop to every component that is shown in the userinfo -->
    <router-view :user="userinfo"></router-view>
  </home>
</body>  

然后,路由器视图中显示的组件可以访问用户prop

示例组件

...

props: ['user'],

...

<template>
   <span>{{ user.name }}</span>
</template>

...

重要提示:为了完成这项工作,您还需要将 props:true 添加到路线的定义中。这里详细解释了所有内容:https://router.vuejs.org/en/essentials/passing-props.html

备注:如果您不想在包装组件中加载userdata,可以将其加载到其他任何位置,并使用事件总线将结果传输到包装组件。但是,您应始终只有一个关于用户信息的真相来源。只能将它存放在一个地方。

答案 1 :(得分:1)

我发现会话助手非常容易使用,它解决了全局使用oauth令牌的问题:

请参阅:https://laravel.com/docs/5.4/session,标题:全局会话助手