Slim Framework และ Auth0

ไม่ได้ทำงานกับ PHP มาเกือบ 10 ปีแล้ว เลยไร้ความหมายมาก ฉันมีโปรเจ็กต์ที่ฉันกำลังทำอยู่ซึ่งต้องใช้ส่วนหน้าของเว็บที่มีการตรวจสอบสิทธิ์ที่ปลอดภัย ไม่จำเป็นต้องมี API เลย

Auth0 ตรงตามข้อกำหนดจากมุมมองการตรวจสอบสิทธิ์ และมีตัวเลือกมากมาย

สิ่งที่ฉันไม่พบคือจะรวมสิ่งนี้เข้ากับ Slim Framework ได้อย่างไร ใครช่วยชี้ทิศทางที่ถูกต้องให้ฉันได้ไหม

พื้นหลังของแอป ฉันกำลังรวบรวมข้อมูลจากแหล่ง API หลายแหล่งลงในฐานข้อมูลและต้องการแสดงสิ่งนี้และเพิ่มฟังก์ชันการทำงานเพิ่มเติม ปัจจุบันสิ่งเหล่านี้ส่วนใหญ่จะแสดงบนแดชบอร์ด Grafana รอบๆ สำนักงาน แต่มีข้อกำหนดใหม่บางประการสำหรับสิ่งนี้ซึ่งไม่สามารถแก้ไขได้ด้วยแดชบอร์ด

Slim ดูเหมือนเป็นเครื่องมือที่เหมาะสมสำหรับฉัน ฉันต้องการบางอย่างที่ช่วยให้ฉันสร้างเพจได้ค่อนข้างง่ายดาย โดยที่ฉันจะแสดงกราฟบางส่วน แต่ส่วนใหญ่เป็นตารางและแบบฟอร์มเพื่อโต้ตอบกับข้อมูล ถ้าสลิมไม่พอดีก็ยินดีหาที่อื่น

ขอบคุณ


person Chris Wood    schedule 09.05.2019    source แหล่งที่มา


คำตอบ (2)


ตามเอกสารประกอบ Auth0 อย่างเป็นทางการ ฉันจะลองตั้งค่าใน Slim 3 เช่นนี้:

การติดตั้ง

composer require auth0/auth0-php

การตั้งค่าคอนเทนเนอร์

เพิ่มรายการโรงงานคอนเทนเนอร์ใหม่:

use Auth0\SDK\Auth0;
use Psr\Container\ContainerInterface as Container;

//...

$container[Auth0::class] = function (Container $container) {
    return new Auth0([
        'domain' => 'YOUR_DOMAIN',
        'client_id' => 'YOUR_CLIENT_ID',
        'client_secret' => 'YOUR_CLIENT_SECRET',
        'redirect_uri' => 'https://YOUR_APP/callback',
        'audience' => 'https://YOUR_DOMAIN/userinfo',
        'scope' => 'openid profile',
        'persist_id_token' => true,
        'persist_access_token' => true,
        'persist_refresh_token' => true,
    ]);
};

การใช้งาน

ข้อมูลของผู้ใช้จะถูกเก็บไว้ในเซสชั่น แต่ละครั้งที่คุณเรียก getUser() มันจะดึงข้อมูลจากเซสชัน

use Auth0\SDK\Auth0;

$auth0 = $container->get(Auth0::class);
$userInfo = $auth0->getUser();

if (!$userInfo) {
    // We have no user info
    // redirect to Login
} else {
    // User is authenticated
    // Say hello to $userInfo['name']
    // print logout button
}

หมายเหตุ: อย่าใช้ภาชนะโดยตรง ในความเป็นจริง ควรใช้ dependency injector จะดีกว่า

person odan    schedule 09.05.2019
comment
ขอบคุณ Odan ฉันได้เพิ่มคอนเทนเนอร์บิตลงในการพึ่งพา (เรียกใช้โครงกระดูกและนั่นคือที่ที่วางบทพูดเดียว) ตอนนี้เพื่อเรียงลำดับส่วนหน้าของสิ่งนั้น - person Chris Wood; 09.05.2019

"แต่ส่วนใหญ่เป็นตารางและแบบฟอร์มเพื่อโต้ตอบกับข้อมูล"

นอกเหนือจากกราฟของคุณที่จะแสดงหากข้อกำหนดข้างต้นเป็นข้อกำหนดหลักแล้ว ฉันขอแนะนำให้คุณดูที่ Yii Framework (เฟรมเวิร์ก PHP)

โดยเฉพาะอย่างยิ่งการดูที่ Gii - ตัวสร้างโค้ดที่สร้างแบบฟอร์มและตาราง CRUD ได้อย่างรวดเร็วเป็นพิเศษ...

person blakeyman    schedule 09.05.2019