ในแอปพลิเคชันส่วนใหญ่ จำเป็นต้องมีการควบคุมการเข้าถึง ขึ้นอยู่กับบทบาทของผู้ใช้ ในบทเรียนนี้ เราจะดูตัวอย่างการตั้งค่าการควบคุมดังกล่าวสำหรับเว็บแอปพลิเคชัน ในส่วนหนึ่งของงานนี้ คุณจะต้อง:
- กำหนดบทบาทของผู้ใช้
- ควบคุมการแสดงรายการเมนูการนำทาง ทั้งนี้ขึ้นอยู่กับบทบาท
- ทำให้ไม่สามารถนำทางไปยังหน้าที่เฉพาะไม่สามารถเข้าถึงได้
การเตรียมการเบื้องต้น
เริ่มจากส่วนเตรียมการกันก่อน เพื่อความสะดวกในการกำหนดค่าเพิ่มเติม การสร้างตัวแปรส่วนกลางที่จะเก็บข้อมูลเกี่ยวกับผู้ใช้ปัจจุบันเป็นสิ่งที่จำเป็น ดังนั้น หากคุณต้องการตรวจสอบ คุณไม่จำเป็นต้องติดต่อแบ็กเอนด์ทุกครั้งและขอข้อมูลเกี่ยวกับผู้ใช้ จะเพียงพอที่จะอ่านข้อมูลที่จำเป็นจากตัวแปรส่วนกลาง
จำเป็นต้องคำนึงถึงตัวเลือกต่าง ๆ ที่ผู้ใช้ที่ได้รับอนุญาตสามารถเข้าสู่แอปพลิเคชันได้:
- เข้าสู่ระบบเนื่องจากการอนุญาตสำเร็จในหน้า Login
- เข้าสู่ระบบเป็นผลมาจากการลงทะเบียน
- เข้าสู่ระบบโดยตรงผ่านลิงค์ไปยังหน้าเฉพาะสำหรับผู้ใช้ที่ได้รับอนุญาตแล้ว
ในแต่ละกรณีเหล่านี้ จะมีการใช้คิวรีแบ็กเอนด์ที่ส่งคืนข้อมูลเกี่ยวกับผู้ใช้ ในกระบวนการทางธุรกิจที่เกี่ยวข้อง คุณจะต้องเพิ่มบล็อก Set Variable เพื่อบันทึกตัวแปร User_gv ที่คุณสร้างไว้ก่อนหน้านี้
บล็อกนี้ถูกเพิ่มเข้าไปในกระบวนการทางธุรกิจของ CheckAuth สำหรับผู้ใช้ที่ได้รับอนุญาต ซึ่งอยู่ในโฟลเดอร์ที่ Prebuilt ไว้ล่วงหน้าในส่วนกระบวนการทางธุรกิจ
ในการเข้าสู่หน้าเข้าสู่ระบบหรือลงทะเบียน บล็อกจะถูกเพิ่มเข้าไปในกระบวนการทางธุรกิจของปุ่มที่เกี่ยวข้อง
ตรวจสอบผลลัพธ์ในหน้าเริ่มต้นของแอปพลิเคชัน ในการดำเนินการนี้ ให้เพิ่ม Label ที่จะทักทายผู้ใช้ด้วยชื่อ และจะเขียนว่าเขาเป็นผู้ดูแลระบบหรือไม่ ขึ้นอยู่กับบทบาท
คุณต้องตั้งค่ากระบวนการทางธุรกิจที่เริ่มทำงานเมื่อมีการแสดง Label ใดๆ (ทริกเกอร์ Label onShow )
- Expand User สำหรับข้อมูลเกี่ยวกับชื่อและบทบาทของผู้ใช้
- In Array เพื่อตรวจสอบว่าผู้ใช้ที่ระบุอยู่ในกลุ่ม Admins หรือไม่
- If-Else . สำหรับความแปรปรวนของการกระทำขึ้นอยู่กับผลการตรวจสอบ
- Set Variable (String) . หากต้องการสร้างตัวแปร String ที่มีค่าเป็น " NOT " หากผู้ใช้ไม่ได้เป็นสมาชิกของกลุ่ม Admins หรือเป็นค่าว่างหากเป็น
- Concat Strings (Multiple) . เพื่อสร้างวลีที่สมบูรณ์ เช่น “ Hi, Ken. You are NOT Admin ”
- Label Update Properties สำหรับการแสดงวลีนี้ในหน้าสุดท้าย
หากทำทุกอย่างถูกต้องหน้าจอจะมีผลลัพธ์ที่คล้ายกันเมื่อเข้าสู่หน้าต่างๆ
การควบคุมการมองเห็นรายการเมนู
ตอนนี้ได้เวลาไปยังส่วนหลักแล้ว มาสร้างเพจที่มีไว้สำหรับผู้ดูแลระบบเท่านั้น และเพิ่มรายการเมนูที่เกี่ยวข้อง ( Admin Page ) เพื่อไปที่หน้านั้น ทางออกที่ดีที่สุดคือการปิดการมองเห็นตามค่าเริ่มต้น
เมื่อใช้บล็อก Navigate ทาง คุณต้องเลือกเพจที่สร้างขึ้นในพารามิเตอร์ Page และค้นหา ID ของเพจนี้
ในตัวอย่างนี้ มีเพียงหน้าเดียวที่มีการเข้าถึงแบบจำกัด แต่เป็นการดีกว่าที่จะคาดการณ์ตัวเลือกในทันทีเมื่อมีหน้าดังกล่าวหลายหน้า และสร้างตัวแปรแบบอ่านอย่างเดียวส่วนกลางเพื่อจัดเก็บรายการของหน้า
ถัดไป คุณต้องสร้างกระบวนการทางธุรกิจเอง (เรียกว่า Set NavItem Visibility ) เพื่อควบคุมการมองเห็นรายการเมนูการนำทาง
- Expand User สำหรับข้อมูลเกี่ยวกับบทบาทของผู้ใช้
- In Array เพื่อตรวจสอบว่าผู้ใช้ที่กำหนดอยู่ในกลุ่ม Admins หรือไม่
- For each loop ในการรันลูปสำหรับเพจทั้งหมดที่ระบุในตัวแปรโกลบอล
- NavItem Update Properties เพื่อควบคุมการเปิดเผยองค์ประกอบ ขึ้นอยู่กับว่าผู้ใช้เป็นผู้ดูแลระบบหรือไม่
ต้องเพิ่มบล็อกของกระบวนการทางธุรกิจที่สร้างขึ้นก่อนที่จะไปที่โฮมเพจในกระบวนการทางธุรกิจของปุ่มเข้าสู่ระบบและลงทะเบียนผู้ใช้ (ก่อนหน้านี้ บล็อก Set Variable ถูกเพิ่มเข้าไปเพื่อบันทึกตัวแปรที่มีข้อมูลเกี่ยวกับผู้ใช้ปัจจุบัน)
การควบคุมการเข้าถึงผ่านลิงค์โดยตรง
สิ่งสุดท้ายที่ต้องทำคือตั้งค่ากระบวนการทางธุรกิจที่ดำเนินการทุกครั้งที่เปิดแอปพลิเคชันโดยทริกเกอร์ “ On app launch ” เช่นเดียวกับขั้นตอนที่แล้ว ให้เพิ่มบล็อก Set NavItems Visibility สำหรับผู้ใช้ที่ผ่านการรับรองความถูกต้อง
นอกจากนี้ จำเป็นต้องให้การป้องกันการเข้าถึงเพจที่ปิดผ่านลิงก์โดยตรง:
- In Array (Admin_pages) เพื่อตรวจสอบว่าเพจเป้าหมายอยู่ในรายการเพจสำหรับผู้ดูแลเท่านั้นหรือไม่
- If-Else . สำหรับความแปรปรวนของการกระทำขึ้นอยู่กับผลการตรวจสอบ หาก False คุณสามารถไปยังหน้าที่ระบุได้ ในกรณีของ True จำเป็นต้องมีการตรวจสอบสิทธิ์ในการเข้าถึงหน้านี้เพิ่มเติม
- Expand User เพื่ออ่านข้อมูลผู้ใช้จากตัวแปรส่วนกลาง User_gv
- In Array เพื่อตรวจสอบการเป็นสมาชิกในกลุ่ม Admins
- If-Else . เพื่อเลือกการดำเนินการขึ้นอยู่กับการมีสิทธิ์ของผู้ดูแลระบบหรือไม่มีอยู่
- Navigate เพื่อไปยังหน้าที่ต้องการหรือเปลี่ยนเส้นทางไปยังหน้าเริ่มต้นในกรณีที่ผู้ใช้ที่ไม่มีสิทธิ์ที่เหมาะสมพยายามเปิดหน้าที่มีไว้สำหรับผู้ดูแลระบบเท่านั้น
หน้าที่เลือกได้รับการปกป้องจากการเข้าถึงโดยไม่ได้รับอนุญาต ในกรณีที่ไม่มีสิทธิ์ สิ่งเหล่านี้จะไม่แสดงในเมนูและไม่สามารถเข้าถึงได้แม้ผ่านลิงก์โดยตรง
สิ่งสำคัญคือต้องจำไว้ว่าการป้องกันการเข้าถึงสำหรับหน้าบางหน้าไม่ได้หมายถึงการป้องกันอัตโนมัติสำหรับปลายทางที่สามารถใช้กับหน้าเหล่านั้นได้ ในการทำเช่นนี้ หากจำเป็น ในการตั้งค่า Middleware Token Auth คุณต้องระบุกลุ่มผู้ใช้ที่มีสิทธิ์เข้าถึงปลายทางที่เลือก