juriandamen/laramultiauth-v2

为 Laravel 提供多因素认证

0.2.0 2020-01-08 10:04 UTC

This package is not auto-updated.

Last update: 2024-09-27 09:01:21 UTC


README

Build Status Latest Stable Version License

LaraMultiAuth 旨在提供最简单易用的接口和钩子,将多因素认证添加到您的 Laravel 应用程序中。

要求

  • PHP >= 7.1
  • Laravel 框架 >= 5.6.0

安装

使用 Composer 需要此包。

composer require rspeekenbrink/laramultiauth

由于 Laravel 5.5 包自动发现存在,因此不需要您将 ServiceProvider 添加到应用配置中。

如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php 中的 providers 数组中

RSpeekenbrink\LaraMultiAuth\ServiceProvider::class,

如果您想使用 LaraMultiAuth 门面,请在 app.php 中的门面中添加以下内容

'LaraMultiAuth' => RSpeekenbrink\LaraMultiAuth\Facade::class

使用发布命令将视图和迁移复制到您的本地应用程序中

php artisan vendor:publish --provider="RSpeekenbrink\LaraMultiAuth\ServiceProvider"

然后运行以下命令来运行迁移

php artisan migrate

如果您尚未这样做,请使用以下命令创建默认的 Laravel Auth

php artisan make:auth

然后在 LoginController.php 中添加以下函数

use RSpeekenbrink\LaraMultiAuth\LaraMultiAuth;

...

/**
 * The user has been authenticated.
 *
 * @param  Request $request
 * @param  mixed  $user
 * @return mixed
 */
public function authenticated(Request $request, $user)
{
    return LaraMultiAuth::handle($request, $user);
}

并将 HasTOTPAuth 特性添加到您的 User 模型中

use RSpeekenbrink\LaraMultiAuth\HasTOTPAuth;

...

class User extends Authenticatable
{
    use HasTOTPAuth;

通过在 routes/web.php 中添加以下内容来注册路由

\RSpeekenbrink\LaraMultiAuth\LaraMultiAuth::routes();

用法

路由

运行时禁用

要禁用多认证,您始终可以在 handle 函数之前调用 LaraMultiAuth::disable()

设置自定义重定向路由

您可以通过调用以下内容来设置用户登录后将重定向到的路由

LaraMultiAuth::setRedirectPath('/dashboard')

其中 /dashboard 部分是要重定向到的路径。

生成 QR 码

为了设置 TOTP 认证,能够扫描包含密钥的 QR 码通常很方便,而不是在您的设备上重新输入密钥。这很容易实现,您只需要安装 Bacon QR Code Package (> v2.0.0) 和 Imagick PHP 扩展。一旦安装了此包,设置控制器将自动将内联 QR 码 src 传递到设置视图。

自定义路由/控制器

当然可以创建您自己的路由和控制器。为此,只需通过以下方式设置 token 验证的路由

LaraMultAuth::setTOTPRoute('your.route.name');

验证令牌以及设置/删除令牌的源代码可以在 TOTPController 中找到。

测试

安装 composer 开发要求后,可以从项目根目录执行以下命令来测试应用程序

vendor/bin/phpunit

待办事项

为此包还有很多工作要做。此包的目标是为用户添加多种多认证方式。现在它只提供了 TOTP 服务,允许用户通过类似 Google Authenticator 或 Authy 的应用程序启用多认证。未来的计划是扩展包以支持短信服务,并使多认证的实现对开发人员来说更加容易。