pioneer-dynamics / laravel-passkey
Laravel Passkey集成,简单易用
Requires
- laravel/framework: ^11.0
- svgta/webauthn: ^1.0
This package is auto-updated.
Last update: 2024-09-13 05:22:36 UTC
README
Laravel Passkey集成,简单易用
点击下面的缩略图查看包的演示视频。
感谢
项目的核心使用了svgta/webauthn库。
警告
!!!警告!!! 命令
passkey:install
只能在开发环境中运行一次。根据提供的选项,此命令将发布以下文件并修改它们以满足您的需求。以下为详细信息。
- 配置文件,如果提供了
--config
参数 - 迁移文件
- Jetstream风格的Inertia JS组件文件,如果提供了
--jetstream-inertia
。
!!警告!! 任何现有文件将被替换。
安装
您有两种方式运行设置 - 1、步骤#2(以下)中的设置命令或 2、
vendor:publish
命令。我推荐使用passkey:install
命令,因为它除了发布文件外,还会替换一些发布文件中的占位符。使用--table
和--username
标志来更改默认值。这些值默认为users
和vendor:publish
命令,则需要手动替换__USERNAME__
、__TABLE__
、__USERNAME_LABEL__
和__USERNAME_TYPE__
占位符。这些占位符可以在js/Components/ConfirmsPasswordOrPasskey.vue
、js/Components/ConfirmsPasskey.vue
、js/Pages/Auth/LoginWithPasskey.vue
和config/passkey.php
文件中找到。
-
引入库
composer install pioneer-dynamics/laravel-passkey
-
运行设置
在运行此命令之前,运行
php artisan passkey:install --help
以了解所有选项。php artisan passkey:install
这将发布配置文件、迁移文件和一些Jetstream-Inertia风格的vue文件。它还会替换这些发布文件中的某些内容。
-
运行迁移
php artisan migrate
-
将
PasskeyUser
接口实现到您的用户模型中,并添加HasPasskeys
特质<?php namespace App\Models; use PioneerDynamics\LaravelPasskey\Traits\HassPasskeys; use PioneerDynamics\LaravelPasskey\Contracts\PasskeyUser; // ... use Illuminate\Foundation\Auth\User as Authenticatable; // ... class User extends Authenticatable implements PasskeyUser { // ... use HasPasskeys; // ... /** * In addition to some helper methods, the below methods are defined * in the `HasPasskeys` trait. Override them here if needed. * * Below are the default definitions in `HasPasskeys` */ // public function getUsername() // { // // The username of the user (Shown by the browser passkey interface) // return $this->email; // } // // public function getUserId() // { // // The ID of the user // return $this->id; // } // // public function getDisplayName() // { // // The display name of the user // return $this->name; // } // // public function getUserIcon() // { // // The display picture of the user. // // This MUST be a data URI. // // E.g. // // return 'data:image/svg+xml;utf8,...' // return null; // } // ... }
-
如果您使用Laravel Jetstream与InertiaJS,可以在
FortifyServiceProvider
的boot()
命令中添加以下内容,以覆盖默认登录Vue并使用本包提供的Vue。<?php namespace App\Providers; // ... use Inertia\Inertia; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; use Laravel\Fortify\Fortify; // ... class FortifyServiceProvider extends ServiceProvider { // ... /** * Bootstrap any application services. */ public function boot(): void { // ... Fortify::loginView(function () { return Inertia::render('Auth/LoginWithPasskey', [ 'canResetPassword' => Route::has('password.request'), 'status' => session('status'), ]); }); // ... } }
-
将
<ConfirmsPassword/>
组件替换为<ConfirmsPasswordOrPasskey/>
组件,在所有使用<ConfirmsPassword/>
的地方。 -
如果您使用Jetstream-InertiaJS,以下包将被自动安装,如果命令带有
--jetstream-inertia
选项。- npm i luxon
- npm i @simplewebauthn/browser
问题
在此处自由提出任何问题。
贡献
自由提出拉取请求。
许可证
MIT许可证(MIT)版权所有 © Mathew Paret
特此授予任何获得本软件及其相关文档文件(以下简称“软件”)副本的任何人免费使用本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向提供软件的人授予上述权利,但须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“现状”提供,不提供任何形式的保证,无论是明示的或暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论这些责任是基于合同行为、侵权行为或其他方式,这些责任源于、产生于或与该软件或软件的使用或其他相关活动有关。