andriesreitsma/laravel-visa

我的 Laravel Passport 扩展包

v0.0.1 2022-05-02 07:26 UTC

This package is auto-updated.

Last update: 2024-10-01 13:15:23 UTC


README

将 VISA 添加到 Laravel Passport 中,以使用 Passport 为单页应用程序 (SPA) 提供登录功能 ... 进行中

laravel\passport 添加 CreateFreshApiToken 中间件到所有 web 中间件的末尾,这样就会在来自后端的响应中添加一个 cookie。

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            ...
            \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
        ],

在常规 props 登录前获取 CSRF Cookie

    const csrf = () => axios.get('/cookie')

在向登录发送请求以获取登录状态之前获取 csrf cookie

    await csrf()
    await axios.post('/login', [email,password]);

注销与登录一样简单

    await axios.post('/logout');

由于 CSRF 漏洞,有针对使用 axios 发帖的解决方案

import Axios from 'axios'

const axios = Axios.create({
    baseURL: process.env.NEXT_PUBLIC_BACKEND_URL,
    headers: {
        'X-Requested-With': 'XMLHttpRequest',
        'Accept': 'application/json'
    },
    withCredentials: true,
    withXSRFToken: true  //Workaround
})

export default axios