laravel - 如何在 vuejs 和 vuex 中设置带有 httponly 标志的 cookie,cookie 来自服务器(Laravel)

标签 laravel vue.js laravel-5 cookies vuex

我有一个 VueJs 项目作为前端和一个 Laravel 项目作为后端用于制作 api 和服务器。

我与 jwt 一起工作在 laravel 中,它返回包含用户信息的 jwt token 。

问题:

我需要使用 HTTPOnly 标志将此 token 存储在 cookie 中,但我不知道在哪里以及如何设置此 cookie!?在服务器端(Laravel)?在客户端(VueJs)?

代码:

我在 Laravel 中的 AuthController:

  public function login()
    {
        $credentials = request(['email', 'password']);

        if (! $token = auth()->attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }

        return $this->respondWithToken($token);
    }


  protected function respondWithToken($token)
    {
        return response()->json([
            'access_token' => $token,
            'token_type'   => 'bearer',
            'expires_in'   => auth()->factory()->getTTL() * 60
        ]);
    }

它返回:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC92dWV4LmNhY3R1c3dlYi5pclwvYXBpXC9sb2dpbiIsImlhdCI6MTU3MzkxNDA1NSwiZXhwIjoxNTczODQ3NTQ2YWEiLCJ1c2VyIjp7ImlkIjozLCJuYW1lIjoiYWxpIiwiZW1haWwiOiJhQGEuY29tIiwicm9sZSI6IjIiLCJlbWFpbF92ZXJpZmllZF9hdCI6bnVsbCwiY3JlYXRlZF9hdCI6IjIwMTktMTEtMTQgMDg6MDU6NDUiLCJ1cGRhdGVkX2F0IjoiMjAxOS0xMS0xNCAwODowNTo0NSJ9fQ.Ow785CLmaAckZR9iowVkEMX6AxBQw7JSklt3Vp1btAcG4",
    "token_type": "bearer",
    "expires_in": 3600
}

在我的 Vuex 存储操作中:

const actions = {
    login({commit}, user) {
        return new Promise((resolve, reject) => {
            commit('auth_request');
            Axios.post(`${api_base_url}/login`, user)
            .then(resp => {
                const token = resp.data.access_token;
                commit('auth_success', token, user);
                resolve(resp)
            })
            .catch(err => {
                commit('auth_error');
                reject(err)
                })
            })          

    },
}

最佳答案

您应该在服务器上创建带有 httponly 标志的 cookie。例如,在 nodejs + express 中,您使用 res.cookie("token", token, {httpOnly: true}) 来完成。 另请注意,使用 httponly 标志,您无法在客户端读取 cookie。

关于laravel - 如何在 vuejs 和 vuex 中设置带有 httponly 标志的 cookie,cookie 来自服务器(Laravel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58891751/

相关文章:

laravel - 在 foreach 循环中访问 FileBag 文件数组

Laravel 新星 : The login form is in HTTP instead of HTTPS

javascript - 如何在计算属性更改时更改数据?

javascript - 从另一个文件执行部分代码

php - Laravel 计数中的行数有很多关系

laravel - 如何更改 Laravel 日志堆栈深度

java - 如何在具有 Spring Boot 后端的 Vue.js 应用程序中包含 CSRF token ?

laravel - Laravel 中使用手机号码和 OTP 进行用户身份验证

php - Laravel Eloquent 创建于

php - 如何从 Laravel 应用程序中的 Controller 方法手动将带有特定消息的错误页面返回到 $errors 中?