descom / laravel-auth-spa
Laravel 包生成模板
4.0.2
2024-07-10 18:25 UTC
Requires
- php: ^8.2
- laravel/framework: 10.0|^11.0
- laravel/sanctum: ^3.3|^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^8.0|^9.0
- phpstan/phpstan: ^1.2
- phpunit/phpunit: ^10.5|^11.0
README
本包是 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; }); }