2
Autologin บน frontend จาก backend
ดูสถานการณ์สมมติต่อไปนี้ ฉันมีโมดูลที่กำหนดเองที่อนุญาตให้ผู้ใช้ส่วนหน้าดำเนินการบางอย่างกับเอนทิตีที่กำหนดเองบางอย่าง (รายละเอียดไม่สำคัญจริงๆ) คำขอคือผู้ดูแลระบบควรสามารถเข้าสู่ระบบในส่วนหน้าด้วยบัญชีลูกค้า (โดยไม่ต้องมีรหัสผ่าน) และสามารถดำเนินการเหล่านั้นให้กับลูกค้าได้ เนื่องจากคุณไม่สามารถใช้เซสชั่นส่วนหน้าจากแบ็กเอนด์และฉันไม่ต้องการที่จะสร้างลิงค์อัตโนมัติสำหรับส่วนหน้าเนื่องจากอาจเป็นช่องโหว่ขนาดใหญ่นี่คือสิ่งที่ฉันทำมาจนถึงตอนนี้ เพิ่มแอตทริบิวต์ว่างสำหรับเอนทิตีลูกค้า (เรียกมันว่าlogin_key) เพิ่มปุ่มในแบ็กเอนด์บนหน้าแก้ไขลูกค้าว่าการเปลี่ยนเส้นทางไปยังผู้ดูแลระบบlogin_keyหน้าเว็บที่สตริงสุ่มถูกสร้างขึ้นและบันทึกไว้ในแอตทริบิวต์ ในการดำเนินการเดียวกันฉันเปลี่ยนเส้นทางผู้ดูแลระบบไปยัง URL ส่วนหน้าเช่นนี้autologin/index/index/customer_id/7/login_key/ajkshdkjah123123(ค่าที่สร้างขึ้นในขั้นตอนก่อนหน้า) ที่ส่วนหน้าของ url หากรหัสลูกค้าและlogin_keyตรงกับลูกค้าที่เฉพาะเจาะจงแล้วฉันจะตั้งวัตถุลูกค้าในเซสชั่น (เป็นเข้าสู่ระบบ) และลบlogin_keyดังนั้น URL จะไม่ทำงานในอนาคต ตะเข็บนี้ใช้งานได้ ฉันหมายถึงฉันเข้าสู่ระบบในฐานะลูกค้าที่เลือกและลิงค์ที่ใช้สำหรับออโตโลจินไม่ทำงานเป็นครั้งที่สอง ข้อเสียคือถ้าผู้ดูแลระบบ 2 คนคลิกที่ปุ่ม "autologin" ในเวลาเดียวกันคนหนึ่งจะล้มเหลวในการเข้าสู่ระบบ แต่นี่เป็นความเสี่ยงที่ยอมรับได้ ความกังวลหลักของฉันคือว่านี่อาจเป็นปัญหาความปลอดภัยขนาดใหญ่ (ไม่ใช่ว่า) บางคนเห็นสิ่งผิดปกติในแนวทางนี้หรือไม่? หรือแนะนำที่ดีกว่า ไม่สนใจข้อเท็จจริงที่ว่าบัญชีลูกค้าสามารถแยกได้จากเว็บไซต์ สิ่งนี้ไม่สำคัญและยังสามารถจัดการได้อย่างง่ายดาย