【问题标题】:Can not get laravel cookie laravel_token while consuming own API使用自己的 API 时无法获取 laravel cookie laravel_token
【发布时间】:2019-04-06 09:47:44
【问题描述】:

cookie在浏览器中可用,但无法获取,甚至无法检查是否存在。

在我使用护照进行身份验证的 laravel 和 vuejs 应用程序上工作。 我是consuming own api with vuejs,所以我在 kernel.php 中添加了 CreateFreshApiToken 中间件

vuejs 正在成功创建和发送 laravel_token cookie,但我无法使用 vuejs 或 javascript 读取它。

因为我无法检查 cookie 是否可用,所以我无法检查用户是否已登录。

我将如何告诉 vuejs 用户已登录并采取预期路线?

现在我将 access_token 保存在 localStorage 中并随每个请求一起发送,但我正在寻找一种解决方案,可以帮助使用 laravel 内置 laravel_token cookie 进行身份验证和授权用户。

更多详情

如果我在控制台中运行这个命令,那么我会得到响应

document.cookie.match('XSRF-TOKEN')

但是

document.cookie.match('laravel_token')

返回空值

我认为顶部显示图像中的勾号图标表示将其设为私有或使其无法访问。

更新

我从网上找到了一些东西 但我仍然想知道如何告诉 vuejs 应用用户是否已登录??

更新 2

现在我正在从 vuejs 手动发送 header 中的 access_token,它工作正常。

if(localStorage.getItem('laravel_token') !== 'undefined' &&  !! localStorage.getItem('laravel_token') == true){

    window.axios.defaults.headers.common['Authorization'] = 'Bearer '+ localStorage.getItem('laravel_token')
}

【问题讨论】:

  • 我遇到了同样的问题。你找到解决办法了吗?
  • laravel_token cookie 只是 http,这意味着我们无法从 js 中获取它。

标签: laravel api cookies vuejs2 laravel-passport


【解决方案1】:

您可以在 LoginController 中实现经过身份验证的方法,并返回一个 json 成功代码。然后,您可以收到此代码并存储。

public function authenticated(Request $request, $user)
{
    // return redirect()->intended($this->redirectPath());
    return json_encode(['authenticated' => true]);
}

使用 axios...

axios.post('/login', {
    email: user.username,
    password: user.password
}).then(response => {
    .then(response => {
        console.log(response)
        //response.data.authenticated will return true if user has been authenticated 
    })
}).catch(err => {
   console.log(err)
})

【讨论】:

    猜你喜欢
    • 2018-09-25
    • 2018-01-03
    • 2017-01-22
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2018-11-14
    • 2017-04-28
    • 2017-06-04
    相关资源
    最近更新 更多