dododedodonl / laravel-2fa
以最少的设置将双因素认证添加到您的 Laravel 应用程序的简单方法。
Requires
- php: ^7.2.5|^7.3|^7.4|^8.0
- bacon/bacon-qr-code: ^2.0
- illuminate/support: 5.7.* | 5.8.* | ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0
- spomky-labs/otphp: ^10.0
Suggests
- ext-imagick: Required to use the web setup for secrets.
README
laravel-2fa
安装
步骤 1
使用 composer 安装
composer require dododedodonl/laravel-2fa
步骤 2
发布迁移并运行它。如果迁移不符合您的数据库模式,请修改迁移。
php artisan vendor:publish --tag "laravel-2fa.migrations"
php artisan migrate
步骤 3
配置基于网页的密钥设置(通过启用 php-imagick
扩展),或者使用 artisan 在用户手动未设置密钥时显示错误消息。
登录错误
编辑您的登录表单页面,并在禁用通过网页的密钥设置时添加以下内容以显示正确的错误。
@error('otp_error') <div class="alert alert-danger" role="alert">{{ $message }}</div> @enderror
供应商资源
可选地发布配置、迁移或视图
# Some php artisan vendor:publish --tag "laravel-2fa.config" php artisan vendor:publish --tag "laravel-2fa.migrations" php artisan vendor:publish --tag "laravel-2fa.views" # All php artisan vendor:publish --provider "Dododedodonl\Laravel2fa\TwoFactorAuthenticationServiceProvider"
用法
保护路由
添加了一个名为 2fa
的中间件别名。您可以将此分配给单个路由或控制器,就像所有其他中间件一样。
Route::get('home', 'HomeController@index')->name('home')->middleware('2fa');
默认禁用
在某些情况下(例如在本地环境中),默认禁用此中间件。使用 2fa:force
作为中间件来覆盖此设置。
全局
要全局使用,将 \Dododedodonl\Laravel2fa\Http\Middleware\Verify2faAuth
添加到您的 app/Http/kernel.php
中的 web
组。以 2fa.
开头的路由和 logout
路由在登录时仍然有效。在其他所有路由上,将应用中间件并要求输入令牌。
密钥设置
通过网页
默认禁用,因为它需要 ext-imagick
php 扩展。编辑 config/laravel-2fa.php
或编辑您的环境文件。将 OTP_SETUP_ENABLED=true
添加到您的 .env
文件中以启用。
通过 artisan
为用户设置密钥:php artisan 2fa:generate {username}
。撤销用户的密钥:php artisan 2fa:revoke {username}
。
故障排除
没有被要求输入令牌
默认情况下,当环境设置为本地时,中间件默认禁用,以简化测试。使用 2fa:force
强制执行中间件的执行。
没有错误地被重定向回登录页面
当数据库中没有找到密钥,并且未配置基于网页的密钥设置时,您会被重定向回登录页面并注销。尽管伴随错误,但您需要编辑您的 login.blade.php
文件,如安装步骤中建议的那样来显示它。
贡献
有关详细信息和使用待办事项列表,请参阅 contributing.md。
安全
如果您发现任何与安全相关的问题,请通过电子邮件发送到 dododedodonl@thor.edu,而不是使用问题跟踪器。
注意
此包假设您使用 Bootstrap 4 作为 CSS 框架。还提供了 Bootstrap 3 视图,通过调用 Dododedodonl\Laravel2fa\TwoFactorAuthentication::useBootstrapThree()
来配置它们。但是,这并不是必需的,您只需更改视图以适应您的 CSS 框架即可。
许可证
MIT。有关更多信息,请参阅 许可证文件。