Di sebagian besar aplikasi, terdapat kebutuhan untuk kontrol akses, bergantung pada peran pengguna. Dalam pelajaran ini, kita akan melihat contoh menyiapkan kontrol semacam itu untuk aplikasi web. Sebagai bagian dari tugas ini, Anda perlu:

  • Tentukan peran pengguna
  • Bergantung pada perannya, kendalikan tampilan item menu navigasi
  • Membuat tidak mungkin untuk menavigasi ke halaman yang tidak dapat diakses oleh peran tertentu

Persiapan awal

Mari kita mulai dengan bagian persiapan. Untuk kenyamanan konfigurasi lebih lanjut, diperlukan pembuatan variabel global yang akan menyimpan informasi tentang pengguna saat ini. Jadi, jika Anda perlu melakukan pemeriksaan, Anda tidak perlu menghubungi backend setiap saat dan meminta informasi tentang pengguna. Cukup membaca data yang diperlukan dari variabel global.


Penting untuk mempertimbangkan berbagai opsi yang dapat digunakan oleh pengguna yang sah untuk masuk ke aplikasi:

  • Login sebagai hasil otorisasi yang berhasil di halaman Login .
  • Login sebagai hasil pendaftaran.
  • Login langsung melalui tautan ke halaman tertentu untuk pengguna yang sudah diotorisasi.

Dalam setiap kasus ini, kueri backend digunakan yang mengembalikan informasi tentang pengguna. Dalam proses bisnis terkait, Anda hanya perlu menambahkan blok Set Variable untuk merekam variabel global User_gv yang Anda buat sebelumnya.

Blok ini ditambahkan ke proses bisnis CheckAuth untuk pengguna resmi, yang terletak di folder Prebuilt di bagian proses bisnis.

Untuk masuk melalui halaman login atau pendaftaran, blok ditambahkan ke proses bisnis dari tombol yang sesuai.

Mari kita periksa hasilnya di halaman awal aplikasi. Untuk melakukan ini, mari tambahkan Label yang akan menyapa pengguna dengan nama dan, tergantung perannya, akan menulis apakah dia admin atau bukan.

Anda perlu menyiapkan proses bisnis yang aktif saat Label apa pun ditampilkan ( Label onShow ).

  1. Expand User . Untuk informasi tentang nama dan peran pengguna.
  2. In Array . Untuk memeriksa apakah pengguna tertentu ada di grup Admins .
  3. If-Else . Untuk variabilitas tindakan tergantung pada hasil pemeriksaan.
  4. Set Variable (String) . Untuk membuat variabel String dengan nilai " NOT " jika pengguna bukan anggota grup Admins atau nilai kosong jika itu.
  5. Concat Strings (Multiple) . Untuk membuat frasa lengkap seperti “ Hi, Ken. You are NOT Admin ”.
  6. Label Update Properties . Untuk tampilan terakhir frasa ini di halaman.

Jika semuanya dilakukan dengan benar, maka dengan varian apa pun memasuki halaman, layar akan menampilkan hasil yang serupa.

Kontrol visibilitas item menu

Sekarang saatnya beralih ke bagian utama. Mari buat halaman yang ditujukan hanya untuk Admin dan tambahkan item menu yang sesuai ( Admin Page ) untuk membukanya. Solusi terbaik adalah menonaktifkan visibilitasnya secara default.

Menggunakan blok Navigate , Anda harus memilih halaman yang dibuat di parameter Page dan mencari tahu ID halaman ini.

Dalam contoh ini, hanya ada satu halaman dengan akses terbatas, tetapi lebih baik untuk segera melihat opsi ketika ada banyak halaman seperti itu dan membuat variabel hanya-baca global untuk menyimpan daftar halaman.

Selanjutnya, Anda perlu membuat proses bisnis itu sendiri (sebut saja Set NavItem Visibility ) untuk mengontrol visibilitas item menu navigasi.

  1. Expand User . Untuk informasi tentang peran pengguna.
  2. In Array . Untuk memeriksa apakah pengguna tertentu ada di grup Admins .
  3. For each loop . Untuk menjalankan loop untuk semua halaman yang ditentukan dalam variabel global.
  4. NavItem Update Properties . Untuk mengontrol visibilitas suatu elemen, bergantung pada apakah pengguna adalah admin.

Blok proses bisnis yang dibuat harus ditambahkan sebelum masuk ke halaman beranda dalam proses bisnis tombol login dan pendaftaran pengguna (sebelumnya, blok Set Variable ditambahkan ke dalamnya untuk merekam variabel dengan informasi tentang pengguna saat ini).

Kontrol akses melalui tautan langsung

Hal terakhir yang harus dilakukan adalah menyiapkan proses bisnis yang dijalankan setiap kali aplikasi diluncurkan oleh pemicu “ On app launch ”. Seperti pada langkah sebelumnya, tambahkan blok Set NavItems Visibility untuk pengguna yang diautentikasi.

Selain itu, perlu memberikan perlindungan terhadap akses ke halaman tertutup melalui tautan langsung:

  1. In Array (Admin_pages) . Untuk memeriksa apakah halaman target ada di daftar halaman khusus admin.
  2. If-Else . Untuk variabilitas tindakan tergantung pada hasil pemeriksaan. Jika False , Anda dapat membuka halaman yang ditentukan. Dalam kasus True , diperlukan pemeriksaan tambahan untuk hak mengakses halaman ini.
  3. Expand User . Untuk membaca informasi pengguna dari variabel global User_gv .
  4. In Array . Untuk memeriksa keanggotaan di grup Admins .
  5. If-Else . Untuk memilih tindakan tergantung pada keberadaan hak admin atau ketidakhadirannya.
  6. Navigate . Untuk membuka halaman yang diperlukan atau mengalihkan ke halaman awal jika pengguna tanpa hak yang sesuai mencoba membuka halaman yang ditujukan hanya untuk admin.

Halaman yang dipilih sekarang dilindungi dari akses tidak sah. Dengan tidak adanya hak, mereka tidak ditampilkan di menu dan tidak dapat diakses bahkan melalui tautan langsung.

Penting untuk diingat bahwa perlindungan akses untuk halaman tertentu tidak berarti perlindungan otomatis untuk titik akhir yang dapat digunakan pada halaman tersebut. Untuk melakukan ini, jika perlu, dalam pengaturan Middleware Token Auth , Anda perlu menentukan grup pengguna yang memiliki hak akses ke titik akhir yang dipilih.

Was this article helpful?

AppMaster.io 101 Kursus kilat

10 Modul
2 Minggu

Tidak yakin harus mulai dari mana? Mulailah dengan kursus kilat kami untuk pemula dan jelajahi AppMaster dari A sampai Z.

Mulai Kursus
Development it’s so easy with AppMaster!

Butuh lebih banyak bantuan?

Selesaikan masalah apa pun dengan bantuan para ahli kami. Hemat waktu dan fokus untuk membangun aplikasi Anda.

headphones

Hubungi dukungan

Beritahu kami tentang masalah Anda, dan kami akan menemukan solusi untuk Anda.

message

Obrolan Komunitas

Diskusikan pertanyaan dengan pengguna lain di obrolan kami.

Bergabunglah dengan komunitas