Advertisement
Guest User

Untitled

a guest
Jul 26th, 2016
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. ## Pendahuluan
  2.  
  3. di Django, kita bisa menggunakan `authentication framework` untuk membuat aksi-aksi seperti `login`, `logout` dan sebagainya. biasanya saat kita memanfaatkan view built-in `django.contrib.auth.views.login` untuk login, kita hanya boleh login dengan `username` dan `password` secara default. nah bagaimana misalnya dalam suatu proyek, aplikasi yang kita buat juga bisa menggunakan `username`, `email` dan `password` ? di sini saya mau mengucapkan terimakasih kepada Antonio Mele yang mau berbagi bagaimana membuat Authentication Backend agar `email` user bisa digunakan untuk login.
  4.  
  5. ## Solusi
  6. di sini saya punya project bernama `bookmarks` dan aplikasi bernama `account`. sekarang buat terlebih dahulu file auth backendnya bernama `authentication.py` di dalam direktori `account` lalu isikan dengan kode berikut ini:
  7.  
  8. ```python
  9. from django.contrib.auth.models import User
  10.  
  11. class EmailAuthBackend(object):
  12. """
  13. Authenticate using e-mail account.
  14. """
  15. def authenticate(self, username=None, password=None):
  16. try:
  17. user = User.objects.get(email=username)
  18. if user.check_password(password):
  19. return user
  20. return None
  21. except User.DoesNotExist:
  22. return None
  23.  
  24. def get_user(self, user_id):
  25. try:
  26. return User.objects.get(pk=user_id)
  27. except User.DoesNotExist:
  28. return None
  29. ```
  30.  
  31. sebagai catatan, file auth backend selalu memiliki dua method yaitu method `authenticate` dan `get_user`. pada method `authenticate` saya memberikan pernyataan `user = User.objects.get(email=username)` untuk mendapatkan object user dari emailnya karena di sini `username` juga bisa berisi email user dan ini ditangani oleh Backend yang kita buat sedangkan username aslinya ditangani oleh Backend default Django. setelah itu kita akan menggunakan objek user ini untuk pengecekan password. kalau password sesuai dengan email yang di masukan, maka method ini mengembalikan objek user. sebaliknya, method ini akan mengembalikan `None` jika email dan username tidak cocok.
  32.  
  33. dan untuk method `get_user` sendiri digunakan oleh Django untuk membuat durasi session user. karena method ini mengembalikan objek user dari `id` nya.
  34.  
  35. oke, setelah itu buka file `settings.py` dari direktori proyek `bookmarks` dan tambahkan:
  36.  
  37. ```python
  38. AUTHENTICATION_BACKENDS = (
  39. 'django.contrib.auth.backends.ModelBackend',
  40. 'account.authentication.EmailAuthBackend',
  41. )
  42. ```
  43.  
  44. ## Kesimpulan
  45.  
  46. nah sekarang user sudah bisa login menggunakan email dan password mereka. cara ini juga merupakan alternatif lain jika kita memiliki proyek di sekolah. bagaimana seorang murid bisa login ke dalam situs kesiswaan dengan `nis` dan `password` mereka. atau bahkan bisa diterapkan untuk mahasiswa agar mahasiswa bisa login ke situs student mereka dengan `nim` dan `password` mereka.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement