darkghosthunter / passless
Passless 是 Laravel 5.8 的无密码认证守护驱动器
Requires
- php: ^7.1.3
- illuminate/auth: 5.8.*
- illuminate/config: 5.8.*
- illuminate/cookie: 5.8.*
- illuminate/events: 5.8.*
- illuminate/http: 5.8.*
- illuminate/notifications: 5.8.*
- illuminate/session: 5.8.*
- illuminate/support: 5.8.*
Requires (Dev)
- orchestra/testbench: 3.8.*
This package is auto-updated.
Last update: 2020-04-06 03:06:04 UTC
README
Passless
Laravel 的无密码认证驱动器。只需加水。
要求
- Laravel 6 或 Laravel 7
检查旧版本以获取旧 Laravel 版本。
包含内容
- Passless 认证守护驱动器
- Passless 登录控制器
LoginAuthentication
通知- 一点魔法
安装
只需运行 Composer 并将其要求添加到您的 Laravel 项目中
composer require darkghosthunter/passless
工作原理
此守护程序扩展了默认的 SessionGuard
,并且仅覆盖了认证方法以 不 检查密码,仅当用户通过提供的凭据(电子邮件或您在表单或控制器中设置的任何键)存在时。
要在不输入密码的情况下注册用户,允许在迁移文件中 password
字符串为 nullable()
。或者,在注册时传递一个空字符串。
Schema::create('users', function (Blueprint $table) { // ... $table->string('password')->nullable(); $table->rememberToken(); $table->timestamps(); });
在您的登录表单中,您可以丢弃密码输入,只留下电子邮件或用户名。
<form action="{{ route('auth.login') }}" method="post"> @csrf <input name="email" type="email" placeholder="Put your email"> <button type="Submit"> </form
这将允许用户通过电子邮件登录(如果他们已注册),如果没有则抛出认证错误。
当用户登录时,将发送一封电子邮件。电子邮件包含一个临时签名的 URL,该 URL 将用户引导到 Passless LoginController
,该控制器将使用户登录到您的应用程序。
如何使用
Passless 很容易集成到您的应用程序中,但在开始使用它之前,您应该更改配置中的某些字符串,以便您的应用程序使用此包。
不要担心,它不会以任何方式破坏您的 Laravel 安装。
1) 添加守护驱动器
进入您的 config/auth.php
并将 passless
添加为您的守护程序的驱动程序。
'guards' => [
'web' => [
'driver' => 'passless',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
请记住,在您的登录和注册控制器中使用 passless 驱动程序时,应设置正确的守护程序(在本例中为
web
)。
2) 禁用密码验证
在您的登录表单中不应有 password
输入。如果您使用的是默认的 Auth\LoginController
类,您应该覆盖 validateLogin()
方法并禁用密码验证。
/** * Validate the user login request. * * @param \Illuminate\Http\Request $request * @return void */ protected function validateLogin(Request $request) { $this->validate($request, [ $this->username() => 'required' // 'password' => 'required ]); }
3) 添加适当的登录响应
由于在验证凭据后,用户不会立即登录到您的应用程序,因此您应该返回一个视图,通知用户检查他的电子邮件(带有消息或警报)。
您可以使用任何视图来通知用户,只需在登录路由中简单地添加一个闪存通知,并使用正确的标记来在视图中检索并显示通知。
如果您使用的是默认控制器,请添加或替换以下代码
/** * The user has been authenticated. * * @param \Illuminate\Http\Request $request * @param mixed $user * @return \Illuminate\Http\Response */ protected function authenticated(Request $request, $user) { $request->flashOnly(['email']); $request->session()->flash('success', 'Check your email to log in!'); return response()->view('auth.login'); }
由于登录表单中没有密码检查,您可能想在登录路由中添加一个类似于
throttle:60,3
的节流中间件,以避免邮件窒息。
配置
为了精细调整,发布Passless配置
php artisan vendor:publish --provider="DarkGhostHunter\Passless\PasslessServiceProvider"
如果您满足以下条件,则必须编辑此配置文件:
- 您正在使用自定义认证控制器。
- 您在您的路由中使用了额外的中间件。
- 需要为Passless提供不同的登录。
- 需要更好的登录电子邮件通知。
配置文件的详细内容一目了然,因此请检查每个设置键的注释。
许可证
本软件包遵循MIT许可证。