該軟件包提供了一條臨時簽名的路由,該路由在用戶中登錄。它沒有提供的是將鏈接實際發送到用戶的一種方法。這是因為我不想對您與用戶進行交流的方式做出任何假設。
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]給我發送電子郵件。對於任何其他問題,請在此處使用問題跟踪器。
我歡迎社區在改善和維護所有包裝方面的幫助。只是彼此好。請記住,我們都只是想盡力而為。