แพ็คเกจนี้มีเส้นทางที่ลงนามชั่วคราวซึ่งบันทึกในผู้ใช้ สิ่งที่ไม่ได้ให้คือวิธีการส่งลิงก์ไปยังเส้นทางไปยังผู้ใช้ นี่เป็นเพราะฉันไม่ต้องการตั้งสมมติฐานใด ๆ เกี่ยวกับวิธีการสื่อสารกับผู้ใช้ของคุณ
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 ' );
}
}
หากคุณใช้คุณสมบัติของ PasswordlessLogin คุณสามารถสร้างลิงค์โดยใช้ค่าเริ่มต้นที่กำหนดไว้ในลักษณะโดยเพียงเรียก createPasswordlessLoginLink()
บนผู้ใช้ที่คุณต้องการเข้าสู่ระบบ
ความผิดพลาดที่ใหญ่ที่สุดที่ฉันเห็นคนทำด้วยแพ็คเกจนี้คือการสร้างลิงค์เข้าสู่ระบบสำหรับผู้ใช้รายหนึ่งและส่งไปยังอีก โปรดระวังและทดสอบรหัสของคุณ ฉันไม่ต้องการให้ใครโกรธฉันเพราะความโง่เขลาของคนอื่น
คุณสามารถเผยแพร่ไฟล์ config หรือเพียงแค่ตั้งค่าที่คุณต้องการใช้ในไฟล์. 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 User)
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 บนลิงค์ที่ไม่ถูกต้องหรือหมดอายุ นอกจากนี้คุณยังสามารถเพิ่มตรรกะที่กำหนดเองเกี่ยวกับวิธีจัดการกับลิงก์ที่ไม่ถูกต้องหรือหมดอายุโดยการจัดการ InvalidSignatureException
และ ExpiredSignatureException
ในไฟล์ Handler.php
ของคุณ
สำหรับปัญหาด้านความปลอดภัยโปรดส่งอีเมลถึงฉันโดยตรงที่ [email protected] สำหรับปัญหาอื่น ๆ ให้ใช้ตัวติดตามปัญหาที่นี่
ฉันยินดีต้อนรับความช่วยเหลือของชุมชนในการปรับปรุงและบำรุงรักษาแพ็คเกจทั้งหมดของฉัน แค่ดีต่อกัน จำไว้ว่าเราทุกคนแค่พยายามทำให้ดีที่สุด