dam1r89 / passwordless-auth
此包的最新版本(1.6.0)没有提供许可证信息。
无需密码,仅通过电子邮件验证用户
1.6.0
2020-08-20 18:03 UTC
Requires (Dev)
- orchestra/testbench: ~3.6
- phpunit/phpunit: ~7.1
README
特性
- 路由已预定义(默认为
/passwordless/login
) - 登录和/或注册模式
- 发送登录电子邮件
- 邮件发送节流
要开始使用,请使用 composer 安装包
composer require dam1r89/passwordless-auth
在 config/app.php
配置文件中注册 dam1r89\PasswordlessAuth\PasswordlessAuthServiceProvider
提供者。
dam1r89\PasswordlessAuth\PasswordlessAuthServiceProvider::class,
发布配置。
php artisan vendor:publish --tag=passwordless
配置文件
/*
* Route prefix for sign-in/sign-up form.
*/
'route_prefix' => 'passwordless',
/*
* This is a model to which LoginToken is saving reference to.
* Almost always this will be User class.
*/
'provider' => \App\User::class,
/*
* Number of seconds user must wait before receiving new sign-up link.
*/
'throttle' => 60 * 10,
/*
* Should user be automatically signed-up if email is not already used
*/
'sign_up' => true,
/*
* Default redirect to
* Redirect url after user is signed in and intended url is not set
*/
'redirect_to' => 'home',
/*
* If user should be "remembered" after sign-in.
*/
'remember' => true,
用户必须实现 dam1r89\PasswordlessAuth\Contracts\UsersProvider
协议,或者如果用户是 eloquent 模型实例,只需使用 UsersRepository
特性。
use dam1r89\PasswordlessAuth\UsersRepository;
use dam1r89\PasswordlessAuth\Contracts\UsersProvider;
class User extends SparkUser implements UsersProvider
{
use UsersRepository;
... 并运行迁移
php artisan migrate
将无密码登录作为默认登录方法
对于 Laravel < 5.5
在 /app/Exceptions/Handler.php
中,将 return redirect()->guest(route('login'));
修改为
return redirect()->guest(route('passwordless.login'));
对于 Laravel 5.5+
由于 Laravel 5.5,/app/Exceptions/Handler.php
中的 unauthenticated()
函数已移动到 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php
。
您仍然可以使用此方法,但必须重写它。在您的 app/Exceptions/Handler.php
文件中包含
use Request; use Illuminate\Auth\AuthenticationException; use Response;
并添加 unauthenticated
函数
/** * Convert an authentication exception into an unauthenticated response. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Auth\AuthenticationException $exception * @return \Illuminate\Http\Response */ protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { return response()->json(['error' => 'Unauthenticated.'], 401); } return redirect()->guest(route('passwordless.login')); }
视觉
发布视图和电子邮件模板。
php artisan vendor:publish --tag=passwordless-views
视图位于 resources/views/vendor/passwordless
文件夹下。
要替换当前登录链接为无密码登录,请使用此路由名称
<a href="{{ route('passwordless') }}">Login</a>
无密码链接
有时您想要通过电子邮件发送一个将自动登录用户的链接。您可以使用 PasswordlessLink
类来实现。例如,用于通知。
use dam1r89\PasswordlessAuth\PasswordlessLink;
$link = PasswordlessLink::for($notifiable)->url('/route/to/resource');
注意:转发带有未使用登录链接的电子邮件是危险的,因为链接提供了直接访问账户的权限。