该软件包提供了一条临时签名的路由,该路由在用户中登录。它没有提供的是将链接实际发送到用户的一种方法。这是因为我不想对您与用户进行交流的方式做出任何假设。
composer require grosv/laravel-passwordless-login
use App User ;
use Grosv LaravelPasswordlessLogin LoginUrl ;
function sendLoginLink ()
{
$ user = User :: find ( 1 );
$ generator = new LoginUrl ( $ user );
$ generator -> setRedirectUrl ( ' /somewhere/else ' ); // Override the default url to redirect to after login
$ url = $ generator -> generate ();
//OR Use a Facade
$ url = PasswordlessLogin :: forUser ( $ user )-> generate ();
// Send $url in an email or text message to your user
}
由于某些站点具有多个用户型模型(用户,管理员等),因此您可以使用性状为每种用户类型设置默认配置。下面的方法由特征提供,因此您只需要包括要使用其他值的方法。
use Grosv LaravelPasswordlessLogin Traits PasswordlessLogin ;
use Illuminate Foundation Auth User as Authenticatable ;
class User extends Authenticatable
{
use PasswordlessLogin ;
public function getGuardNameAttribute (): string
{
return config ( ' laravel-passwordless-login.user_guard ' );
}
public function getShouldRememberLoginAttribute (): bool
{
return config ( ' laravel-passwordless-login.remember_login ' );
}
public function getLoginRouteExpiresInAttribute (): int
{
return config ( ' laravel-passwordless-login.login_route_expires ' );
}
public function getRedirectUrlAttribute (): string
{
return config ( ' laravel-passwordless-login.redirect_on_success ' );
}
}
如果您使用的是密码无蛋白特征,则可以通过在要登录的用户上调用createPasswordlessLoginLink()
来使用特征中定义的默认值生成链接。
我可以看到有人使用此软件包犯的最大错误是为一个用户创建登录链接并将其发送给另一个用户。请小心并测试您的代码。我不希望有人为别人的愚蠢生气。
您可以发布配置文件,或者只是设置要在.env文件中使用的值:
LPL_USER_MODEL = AppUser
LPL_REMEMBER_LOGIN = false
LPL_LOGIN_ROUTE = /magic-login
LPL_LOGIN_ROUTE_NAME = magic-login
LPL_LOGIN_ROUTE_EXPIRES = 30
LPL_REDIRECT_ON_LOGIN = /
LPL_USER_GUARD = web
LPL_USE_ONCE = false
LPL_INVALID_SIGNATURE_MESSAGE = " Expired or Invalid Link "
LPL_USER_MODEL
是您要登录的可验证模型(通常是app 用户)
LPL_REMEMBER_LOGIN
是您是否要记住登录(例如用户检查记住我)
LPL_LOGIN_ROUTE
是指向此软件包提供的登录功能的路由。确保您不要与其他路线之一相撞。
LPL_LOGIN_ROUTE_NAME
是lpl_login_route的名称。同样,请确保它不会与您现有的任何路由名称相撞。
LPL_LOGIN_ROUTE_EXPIRES
是您希望链接有益的分钟数。我建议您设置最短的价值,对您的用例有意义。
LPL_REDIRECT_ON_LOGIN
是用户通过单击魔术链接登录后要发送的地方。
LPL_USE_ONCE
是您是否要在首次使用后链接到期(使用缓存存储已使用的链接)
LPL_INVALID_SIGNATURE_MESSAGE
是我们在无效或过期链接上以401状态中止的自定义消息。您还可以通过处理Handler.php
文件中处理InvalidSignatureException
和ExpiredSignatureException
来处理如何处理无效或过期链接的自定义逻辑。
有关安全问题,请直接通过[email protected]给我发送电子邮件。对于任何其他问题,请在此处使用问题跟踪器。
我欢迎社区在改善和维护所有包装方面的帮助。只是彼此好。请记住,我们都只是想尽力而为。