descom/laravel-auth-spa

Laravel 包生成模板

4.0.2 2024-07-10 18:25 UTC

This package is auto-updated.

Last update: 2024-09-10 19:06:14 UTC


README

tests analyse style

本包是 Laravel 认证后端实现。注册了从前端 SPA 或 SSR 实现所有 Laravel 认证功能的路由和控制器,包括登录、密码重置等。

安装

composer require descom/laravel-auth-spa

配置

Laravel Sanctum

运行

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate

将 Sanctum 的中间件添加到您的应用 app/Http/Kernel.php 文件中的 api 中间件组中

'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

配置 CORS,您需要编辑 config/cors.php 文件并更改以下行

    'paths' => ['api/*', 'sanctum/csrf-cookie', 'login', 'logout', 'password/forget', 'password/reset'],

    /// ...

    'supports_credentials' => true,

在生产环境中定义以下环境变量

本地

SANCTUM_STATEFUL_DOMAINS=localhost:3000
SESSION_DOMAIN=localhost

针对域名 'www.app.tld' 的生产环境

SANCTUM_STATEFUL_DOMAINS=www.app.tld
SESSION_DOMAIN=.app.tld

php artisan vendor:publish --provider="Descom\AuthSpa\AuthSpaServiceProvider" --tag="config"

您可以在配置文件 config/authspa.php 中定义您的前端

///
    'frontend' => [
        'url' => env('FRONTEND_URL', 'https://:3000'),

        'reset_password_url' => env('FRONTEND_RESET_PASSWORD_URL', '/login/reset'),
    ],
///

使用

登录

POST /login

{
    "email": " <email>",
    "password": "<password>"
}

登出

POST /logout

获取重置密码链接

POST /password/forgot

{
    "email": " <email>"
}

通过链接重置密码

POST /password/reset

{
    "token": "<token>",
    "email": " <email>",
    "password": "<password>",
    "password_confirmation": "<password>"
}

更新当前登录用户的密码

PUT /api/user/password

{
    "current_password": "<current_password>",
    "password": "<newpassword>",
    "password_confirmation": "<newpassword>"
}

获取用户信息

GET /api/user

Nuxt.js

安装 Nuxt Auth

yarn add --exact @nuxtjs/auth-next
yarn add @nuxtjs/axios

并配置 nuxt.config.js 文件

{
  modules: [
    '@nuxtjs/axios',
    '@nuxtjs/auth-next'
  ],
  auth: {
    strategies: {
      laravelSanctum: {
        provider: 'laravel/sanctum',
        url: process.env.API_URL || 'https://:8000',
      },
    },
  }
}

自定义

定义默认密码规则

您可能希望在一个位置指定密码的默认验证规则。您可以使用接受闭包的 Password::defaults 方法轻松完成此操作。给 defaults 方法提供的闭包应返回密码规则的默认配置。通常,应该在应用程序某个服务提供商的 boot 方法中调用 defaults 规则。

use Illuminate\Validation\Rules\Password;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Password::defaults(function () {
        $rule = Password::min(8);

        return $this->app->isProduction()
                    ? $rule->mixedCase()->uncompromised()
                    : $rule;
    });
}

其他规则

更多信息