Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Masuk Dengan Layanan Eksternal

Memasukkan nama pengguna dan kata sandi adalah salah satu cara untuk mengakses akun, tetapi itu bukan satu-satunya. Dalam artikel ini, kita akan melihat cara mengaktifkan layanan eksternal (seperti Google atau Facebook) saat masuk ke database.

Apa itu Login Layanan Eksternal?

Memberi pengguna opsi untuk mengakses akun sistem mereka melalui layanan eksternal adalah tren yang berkembang di kalangan desainer web. Opsi ini dapat memberikan beberapa manfaat, seperti memberi pengguna lebih sedikit kombinasi nama dan sandi untuk diingat. Ini juga dapat membantu administrator mempersonalisasi pengalaman pengguna.

Ketika aplikasi web menawarkan login layanan eksternal, layar login terlihat seperti gambar di bawah ini. Seorang pengguna dapat memasukkan login dan kata sandi mereka, atau mereka dapat mengklik tombol yang akan mengarahkan mereka ke layanan pilihan mereka (Facebook, Twitter, Google, dll.) di mana mereka akan masuk dan diarahkan ke aplikasi asli.

Berikut adalah contoh layar masuk dari Akademi Vertabelo:

Cara Kerja Login Eksternal

Menambahkan layanan masuk eksternal memerlukan beberapa pekerjaan tambahan dari pengembang. Layanan media sosial paling populer menggunakan protokol yang disebut OAuth 2.0 . Hanya Twitter yang menggunakan protokol lama yang disebut OAuth 1.0 . Protokol memungkinkan pembacaan informasi pengguna seperti nama lengkap, email, jenis kelamin, dll. Informasi pasti yang tersedia bergantung pada layanan media sosial dan apa pun yang diberikan pengguna. (Misalnya, dimungkinkan untuk memiliki akun Facebook tanpa alamat email terlampir.) Namun, kami akan fokus pada bagaimana menerapkan sistem ini dalam desain database.

Sebagai titik awal, kami akan menggunakan artikel kami sebelumnya tentang pemulihan kata sandi dan konfirmasi email sebagai dasar. Berikut adalah tabel terkait pengguna dari artikel ini.




Merancang Database untuk Login Eksternal

Banyak informasi di user_account tabel terkait dengan penanganan otentikasi – ditambah fitur terkait seperti pengingat kata sandi dan konfirmasi email – milik kami sendiri. Kami tidak memerlukan kolom ini jika pengguna mengautentikasi dengan layanan eksternal. Pengingat kata sandi, konfirmasi email, dan fitur lainnya ditangani oleh layanan eksternal. Langkah pertama dalam desain kami adalah memisahkan user_account tabel menjadi dua tabel:user_account dan user_profile .

user_account table sekarang menangani semua pembukuan otentikasinya sendiri. user_profile tabel mewakili informasi pengguna yang sebenarnya:nama, email, zona waktu, persyaratan penerimaan layanan, dan sebagainya. Semua tabel bisnis sekarang harus terkait dengan user_profile tabel.

Sekarang ke akun eksternal. OAuth protokol, pada akhirnya, memberi kami pengidentifikasi untuk pengguna di sistem mereka. Pengidentifikasi ini bukan nama pengguna di sistem eksternal. Itu hanya pengidentifikasi untuk aplikasi kita. Kami harus menyimpan id internal ini di database kami. Kita bisa menambahkan kolom nullable facebook_id , google_id , twitter_id , dll. ke tabel user_profile . Tapi kami akan melakukan sesuatu yang berbeda.

Kami akan menambahkan tabel baru:facebook_account , twitter_account , google_account , yang akan menyimpan id eksternal. Dengan cara ini, jika perlu, kami dapat menambahkan informasi tambahan khusus untuk setiap situs web sosial. Jika kami ingin menambahkan kemungkinan masuk untuk situs web sosial lain, kami tidak perlu mengubah user_profile meja. Kami hanya akan menambahkan external_service_account tabel.

Setiap tabel baru memiliki format kolom yang sama. Salah satunya adalah int user_profile_id , yang keduanya merupakan kunci asing yang mereferensikan kolom id di user_profile tabel dan kunci utama. (Ini dapat berfungsi sebagai kunci utama karena tidak ada dua akun di sistem kami yang boleh dikaitkan dengan beberapa akun dari layanan eksternal yang sama.)

Kolom lainnya akan menjadi id akun eksternal – facebook_id , misalnya. Ada batasan unik pada setiap facebook_id , google_id , dan twitter_id kolom. Kita tahu tidak ada dua akun yang diberi id yang sama. Faktanya, ketika pengguna diautentikasi dengan layanan eksternal, kami mengetahui facebook_id mereka . Saat kami menemukan baris yang sesuai di facebook_account tabel dan temukan user_profile , kami tahu pengguna mana yang baru saja masuk ke sistem. Jika tidak ada baris dengan id ini, kami membuat baris baru di user_profile tabel, dan baris baru di tabel akun yang sesuai.

Ini model terakhirnya:





  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pulihkan Database WordPress Anda dengan WP-CLI

  2. Cara Memfilter Catatan dengan Fungsi Agregat COUNT

  3. Ambang Pengoptimalan – Pengelompokan dan Penggabungan Data, Bagian 1

  4. Solusi tantangan generator seri angka – Bagian 5

  5. Menggunakan Microsoft DiskSpd untuk Menguji Subsistem Penyimpanan Anda