rolfhaug/laravel-magic-link

创建魔法登录链接,使用户可以通过URL登录到任何路由(无需密码)

v1.2.0 2019-05-30 12:36 UTC

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时

有时为用户可以执行的所有操作提供一个管理员工具并没有意义。相反,你可以在管理员仪表板上添加一个“以用户身份登录”的链接,然后使用用户仪表板进行必要的更改。

技巧提示 在私密标签页中以用户身份登录,以免丢失您的管理员会话 :)

示例

作为管理员,您可能不需要在您的电子商务仪表板中管理用户的地址列表。如果您偶尔需要提供此类支持,您可以以用户身份登录。