Kerangka Ramping dan Auth0

Tidak bekerja dengan PHP selama hampir 10 tahun sekarang, jadi sangat ketinggalan jaman. Saya memiliki proyek yang sedang saya kerjakan yang memerlukan front end web dengan otentikasi aman. Tidak diperlukan API sama sekali.

Auth0 memenuhi persyaratan dari sudut pandang otentikasi, dan menyediakan banyak opsi.

Apa yang saya tidak dapat temukan adalah bagaimana mengintegrasikannya dengan Slim Framework, adakah yang bisa mengarahkan saya ke arah yang benar?

Latar belakang aplikasi, saya mengumpulkan informasi dari berbagai sumber API ke dalam database dan ingin menampilkannya dan menambahkan beberapa fungsi lainnya. Saat ini sebagian besar dari hal ini ditampilkan pada dasbor Grafana di sekitar kantor, namun ada beberapa persyaratan baru untuk hal ini yang tidak dapat diselesaikan dengan dasbor.

Slim sepertinya alat yang tepat untuk saya, saya memerlukan sesuatu yang memungkinkan saya membuat halaman dengan cukup mudah di mana saya akan menampilkan beberapa grafik tetapi sebagian besar tabel dan formulir untuk berinteraksi dengan data. Jika Slim tidak cocok, silakan mencari di tempat lain.

Terima kasih


person Chris Wood    schedule 09.05.2019    source sumber


Jawaban (2)


Menurut dokumentasi Auth0 resmi saya akan mencoba pengaturan di Slim 3 seperti ini:

Instalasi

composer require auth0/auth0-php

Pengaturan Kontainer

Tambahkan entri pabrik kontainer baru:

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,
    ]);
};

Penggunaan

Informasi pengguna disimpan dalam sesi. Setiap kali Anda memanggil getUser(), informasi dari sesi akan diambil.

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
}

Catatan: Jangan gunakan wadahnya secara langsung. Pada kenyataannya lebih baik menggunakan injeksi ketergantungan.

person odan    schedule 09.05.2019
comment
Terima kasih Odan, saya menambahkan bit kontainer ke dependensi (menjalankan kerangka, dan di situlah monolog ditempatkan) Sekarang untuk memilah bagian depannya. - person Chris Wood; 09.05.2019

"tetapi kebanyakan tabel dan formulir untuk berinteraksi dengan data"

selain grafik Anda yang akan ditampilkan jika hal di atas adalah persyaratan utama maka saya juga menyarankan Anda melihat Yii Framework (kerangka PHP)

Khususnya melihat Gii - generator kode yang membuat formulir dan tabel CRUD dengan sangat cepat...

person blakeyman    schedule 09.05.2019