tecnomanu / unilogin-laravel-lumen
通过魔法链接实现的通用身份验证包
Requires
- php: ^7.3|^8.0
- firebase/php-jwt: *
- illuminate/database: ^7.0|^8.0|^9.0
- illuminate/events: ^7.0|^8.0|^9.0
- illuminate/mail: 7.0|^8.0|^9.52
- illuminate/notifications: 7.0|^8.0|^9.0
- illuminate/support: ^7.0|^8.0|^9.0
Requires (Dev)
- illuminate/testing: 7.0|^8.0|^9.0
- mockery/mockery: ^1.3
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-08-31 00:35:57 UTC
README
UniLogin 是一个 Laravel/Lumen 包,允许用户通过魔法链接登录到 Web 应用程序。这意味着用户不需要记住密码即可登录,只需点击发送到其电子邮件的链接即可。
索引
简介
UniLogin 允许您在 Laravel 或 Lumen 应用程序中实现魔法链接登录。这种登录方式基于向用户发送链接,当用户点击该链接时,会自动将用户登录到您的应用程序。
安装
UniLogin 的安装非常简单。您可以在 Laravel 或 Lumen 应用程序中安装它
Laravel
-
运行以下命令
composer require tecnomanu/unilogin -
发布配置文件和视图
php artisan vendor:publish --provider="Tecnomanu\UniLogin\LaravelServiceProvider"
Lumen
-
运行以下命令
composer require tecnomanu/unilogin -
复制配置文件和视图
php artisan unilogin:copy-views
配置
一旦安装了该包,您可以通过 config/unilogin.php 文件或直接在您的 .env 文件中配置它。
UNILOGIN_SECRET:生成魔法链接的密钥。您可以使用php artisan unilogin:create-secret命令生成它。默认:空。UNILOGIN_TOKEN_LIFETIME:魔法链接令牌的有效期(秒)。默认:900(15分钟)。UNILOGIN_CALLBACK_URL:成功登录后应用程序应重定向到的 URL。默认:空。UNILOGIN_API_BASE_PATH:API 的基本路径。默认:空。
Lumen 的其他配置
如果您正在使用 Lumen,则需要添加一些额外的配置才能使该包正常工作。
在您的 bootstrap/app.php 文件中添加以下行
$app->alias('view', Illuminate\View\Factory::class); $app->alias('mailer', \Illuminate\Contracts\Mail\Mailer::class); $app->alias('mail.manager', Illuminate\Mail\MailManager::class); $app->alias('mail.manager', Illuminate\Contracts\Mail\Factory::class); $app->alias('Notification', Illuminate\Support\Facades\Notification::class); $app->configure('mail'); $app->configure('view');
用法
- 中间件
要使用 UniLogin 魔法链接,您需要使用包中提供的中间件。您可以在您的 web.php 或 api.php 路由文件中添加中间件
Route::get('/login-success', function (Request $request) { // Receive from request "email"; // Your login logic here. // ... // Or use this example $user = User::where('email', $request->email)->first(); Auth::login($user); return redirect('/'); })->middleware('unilogin.success');
API
UniLogin 包含一些预配置的路由,用于处理魔法链接登录过程的各个阶段。以下是这些路由
POST /unilogin:将魔法链接发送到用户的电子邮件。GET /unilogin/polling:检查魔法链接是否被点击。GET /unilogin/callback:处理魔法链接的回调。GET /unilogin/error:显示登录失败的错误消息。GET /unilogin/invalid-session:显示会话无效的消息。GET /unilogin/success:处理成功登录。
高级定制
随着您对 UniLogin 包的集成和使用,您可能需要根据您的项目进行调整。在本节中,我们将探讨一些最常用的定制 UniLogin 的方法。
-
中间件
UniLogin 包包含一个自定义中间件:
SuccessTokenMiddleware。此中间件处理 SUCCESS 类型的令牌并将用户的电子邮件添加到请求中。您可能需要自定义此中间件,例如,如果您需要向请求中添加更多字段。以下是如何自定义此中间件以向请求中添加 'company_id' 字段的示例
// SuccessTokenMiddleware.php //... public function handle(Request $request, Closure $next) { // ... $credentials = $request->get('credentials'); // Merge additional fields to the request $request->merge([ 'email' => $credentials['email'], 'company_id' => $credentials['company_id'] // New field ]); return $next($request); } //...
-
视图
视图是您可以自定义UniLogin的另一个区域。错误、无效会话和成功视图可以根据您项目的需求进行自定义。您可以使用
unilogin:copy-views命令将视图复制到您的应用程序中,并做出必要的更改。
错误处理
错误处理对于提供顺畅和一致的用户体验至关重要。UniLogin包内置了一个错误处理系统,根据发生的错误抛出不同类型的异常。
在大多数情况下,UniLogin包返回一个包含错误描述和HTTP状态码的JSON响应。例如,如果令牌已过期,它将返回一个状态为'error'的JSON响应和相应的消息。
如果您需要一个更定制的错误处理系统,可以考虑编辑中间件中抛出异常的函数。
贡献
如果您想为UniLogin的开发做出贡献,可以按照以下步骤操作
- 在GitHub上Fork该存储库。
- 将您的Fork克隆到本地机器上。
- 在本地存储库中创建一个新分支。
- 在新分支中进行更改。
- 将更改推送到GitHub上的您的Fork。
- 从您的Fork向主UniLogin存储库发起拉取请求。
- 经过审查和必要的讨论后,您的更改可能会被合并到主分支。
在发起拉取请求之前,请确保检查现有问题和拉取请求,以避免重复。此外,请遵循现有的编码标准和约定。
感谢您对为UniLogin做出贡献的兴趣!