rolfhaug / laravel-magic-link
创建魔法登录链接,使用户可以通过URL登录到任何路由(无需密码)
Requires
- php: 7.1.8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^7.5
This package is auto-updated.
Last update: 2024-09-30 01:19:56 UTC
README
此Laravel包允许您创建魔法登录链接,使用户可以通过URL登录到任何路由(无需密码)。
example.com/mypage/update-card?token=1234:4cd3cf4b1c56c3e6e8ebe22db4b82869
使用您Laravel项目的唯一APP_KEY
作为盐生成令牌哈希。令牌可以附加到任何路由。
该包轻量级,无依赖项,不执行不必要的检查或数据库调用。
安装
该包支持Laravel 5.0及更高版本。安装包很简单,需要三个步骤。
要求包
composer require rolfhaug/laravel-magic-link
在web
中间件组下注册中间件
// App/Http/Kernel.php
protected $middlewareGroups = [
'web' => [
//...
\RolfHaug\TokenAuth\Middleware\TokenAuthentication::class,
]
];
给中间件一个比\App\Http\Middleware\Authenticate::class
更高的priority
。
请注意 它必须具有更高的优先级才能与受保护的路由一起工作。
// App/Http/Kernel.php
protected $middlewarePriority = [
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\RolfHaug\TokenAuth\Middleware\TokenAuthentication::class,
\App\Http\Middleware\Authenticate::class,
//...
];
请注意 如果您的
Kernel.php
中没有$middlewarePriority
属性,您可以从您的内核扩展的Illuminate\Foundation\Http\Kernel.php
中获取它。
用法
作为本包的用户,您通常会生成令牌并将它们附加到URL上。
生成令牌
generate
方法接受您的用户模型作为第一个参数,并返回一个唯一且安全的令牌。
$token = RolfHaug\TokenAuth\LoginToken::generate($user);
// 1234:4cd3cf4b1c56c3e6e8ebe22db4b82869
如果需要,您可以将布尔标志(默认为false)作为第二个参数传递,以便接收令牌参数
$token = RolfHaug\TokenAuth\LoginToken::generate($user, true);
// token=1234:4cd3cf4b1c56c3e6e8ebe22db4b82869
路由和URL
有许多创建所需URL的方法,以下是一些常见方法。
命名路由
generateRoute
方法将生成指向命名路由的URL,并附加登录令牌。
$url = RolfHaug\TokenAuth\LoginToken::generateRoute($user, 'web.mypage.billing');
您可以通过传递额外的参数来使用路由辅助器。
$url = LoginToken::generateRoute($user, 'user.show', [$user]);
自由URL
使用可选的$withParameter
标志,作为第二个参数,获取配置的查询参数,以便轻松将其附加到任何URL。
$url = "example.com/mypage?" . RolfHaug\TokenAuth\LoginToken::generate($user, true);
使用http_build_query
构建的URL
使用本地http_build_query
函数将令牌与其他查询参数合并。
$queryParameters = [
'section' => 'billing'
];
$token = RolfHaug\TokenAuth\LoginToken::generateArray($user)
$url = "example.com/mypage?" . http_build_query(array_merge($queryParameters, $token));
配置
您可以在config/auth.php
文件中通过添加或覆盖以下选项来自定义该包。
return [
// Token Auth config (rolfhaug/laravel-magic-link package)
'token-parameter' => 'token', // Parameter the middleware will look for in the request
'token-separator' => ':', // Separator between user id and token hash
// Disable middleware on following routes
'token-exclude-routes' => [
'password/reset*'
]
];
用户模型
令牌生成器需要“providers.users.model”下在config/auth.php
文件中定义的模型。默认情况下,这是App\User
模型。
用例
该包旨在减少用户的摩擦。我已经成功使用此包提高了宝贵的转换率。以下是一些关于何时该包有用的想法。
当用户被鼓励在电子邮件或短信中采取行动时
- 当您发送有关遗弃购物车的电子邮件时
- 当用户必须更新其卡以继续服务时
- 当您的内容被登录墙保护时
当原型化项目或创建MVP时
有时为用户可以执行的所有操作提供一个管理员工具并没有意义。相反,你可以在管理员仪表板上添加一个“以用户身份登录”的链接,然后使用用户仪表板进行必要的更改。
技巧提示 在私密标签页中以用户身份登录,以免丢失您的管理员会话 :)
示例
作为管理员,您可能不需要在您的电子商务仪表板中管理用户的地址列表。如果您偶尔需要提供此类支持,您可以以用户身份登录。