cari
Rumahpembangunan bahagian belakangTutorial PythonTeknik kawalan kebenaran dalam rangka kerja Django (Bahagian 2)

Kemahiran kawalan kebenaran dalam rangka kerja Django (Bahagian 2)

Dalam rangka kerja Django, kawalan kebenaran adalah bahagian yang sangat penting. Dalam artikel sebelumnya, kami telah memperkenalkan beberapa teknik kawalan kebenaran asas dalam rangka kerja Django, termasuk menggunakan sistem pengesahan kebenaran terbina dalam dan kawalan kebenaran berasaskan penghias. Artikel ini akan terus meneroka teknik kawalan kebenaran lain dalam rangka kerja Django.

  1. Halaman belakang pengesahan tersuai

Dalam rangka kerja Django, kami boleh menggunakan hujung belakang pengesahan tersuai untuk melaksanakan logik pengesahan tersuai. Dengan mewarisi kelas belakang pengesahan Django dan melaksanakan kaedah pengesahannya, kami boleh menentukan logik pengesahan kami sendiri. Sebagai contoh, kita boleh menggunakan bahagian belakang pengesahan tersuai untuk melaksanakan pengesahan berasaskan LDAP atau OAuth.

Berikut ialah contoh menggunakan bahagian belakang pengesahan tersuai untuk melaksanakan pengesahan berasaskan LDAP:

from django.contrib.auth.backends import BaseBackend
import ldap

class LDAPBackend(BaseBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        ldap_server = "ldap://example.com"
        ldap_base_dn = "ou=people,dc=example,dc=com"
        conn = ldap.initialize(ldap_server)
        try:
            conn.simple_bind_s("uid=%s,%s" % (username, ldap_base_dn), password)
            return User.objects.get(username=username)
        except ldap.INVALID_CREDENTIALS:
            return None

Dalam contoh di atas, kami mewarisi kelas BaseBackend Django dan melaksanakan kaedah pengesahan di dalamnya untuk menentukan logik pengesahan anda sendiri. Dalam kaedah ini, kami menggunakan modul ldap Python untuk menyambung ke pelayan LDAP dan mengesahkan bahawa nama pengguna dan kata laluan adalah betul melalui kaedah simple_bind_s. Jika pengesahan berjaya, objek Pengguna dikembalikan.

Selepas kami selesai menulis bahagian belakang pengesahan tersuai, kami perlu menentukan kelas bahagian belakang pengesahan dalam fail tetapan Django:

AUTHENTICATION_BACKENDS = ['path.to.LDAPBackend']
  1. Gunakan django-guardian untuk kawalan kebenaran yang terperinci

django-guardian ialah aplikasi pihak ketiga yang sangat berkuasa dalam rangka kerja Django, yang menyediakan fungsi kawalan kebenaran yang terperinci. Berbanding dengan sistem pengesahan kebenaran terbina dalam Django, penjaga django menyediakan kaedah kawalan kebenaran yang lebih fleksibel dan disesuaikan.

Menggunakan django-guardian adalah sangat mudah Anda hanya perlu memasang dan menentukan AUTHENTICATION_BACKENDS dan AUTHORIZATION_BACKENDS dalam fail tetapan Django. Contohnya:

# settings.py

AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)

INSTALLED_APPS = (
    # ...
    'guardian',
)

MIDDLEWARE_CLASSES = (
    # ...
    'guardian.middleware.PermissionDeniedMiddleware',
)

AUTHORIZATION_BACKENDS = (
    'guardian.backends.ObjectPermissionBackend',
)

django-guardian menyediakan beberapa penghias yang boleh digunakan untuk mengawal akses kepada objek tertentu dalam model. Contohnya:

from django.views.generic import DetailView
from guardian.decorators import permission_required
from myapp.models import MyModel

@permission_required('myapp.view_mymodel', (MyModel, 'pk', 'pk'))
class MyModelDetailView(DetailView):
    model = MyModel

Dalam contoh di atas, kami menggunakan permission_required decorator untuk mengawal kebenaran akses MyModel. Penghias perlu menentukan kebenaran dan maklumat objek untuk disahkan. Jika pengesahan kebenaran gagal, pengecualian PermissionDenied akan dilemparkan secara automatik.

  1. Gunakan django-rules untuk kawalan kebenaran berasaskan peraturan

django-rules ialah satu lagi aplikasi pihak ketiga yang sangat praktikal yang menyediakan fungsi kawalan kebenaran berasaskan peraturan . Berbanding dengan django-guardian, django-rules adalah lebih mudah dan ringan.

Penggunaan django-rules adalah serupa dengan penggunaan django-guardian Anda hanya perlu memasang dan menentukan AUTHENTICATION_BACKENDS dan AUTHORIZATION_BACKENDS dalam fail tetapan Django. Contohnya:

# settings.py

INSTALLED_APPS = (
    # ...
    'rules',
)

AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)

AUTHORIZATION_BACKENDS = ('rules.permissions.ObjectPermissionBackend',)

Menggunakan django-rules untuk kawalan kebenaran memerlukan penentuan set peraturan, setiap satunya mengandungi syarat dan hasil. Jika syarat dipenuhi, operasi dalam hasilnya akan dilakukan, jika tidak, ia tidak akan dilakukan. Contohnya:

from rules import rule
from myapp.models import MyModel

@rule('view', 'myapp.view_mymodel')
def can_view_mymodel(user, mymodel):
    return True

@rule('change', 'myapp.change_mymodel')
def can_change_mymodel(user, mymodel):
    return user.is_superuser or user == mymodel.user

Dalam contoh di atas, kami menentukan dua peraturan untuk mengawal kebenaran untuk melihat dan mengubah suai objek MyModel. Dalam setiap peraturan, kami menggunakan penghias peraturan untuk menentukan syarat dan keputusan. Dua parameter, pengguna dan model saya, perlu diluluskan dalam syarat untuk penghakiman kebenaran. Jika kebenaran diluluskan, anda boleh terus melakukan operasi seterusnya.

Selepas menulis peraturan, kita perlu menambah peraturan pada Django:

# settings.py

RULES_MODULE = 'myapp.rules'

Dalam contoh di atas, kami menggunakan RULES_MODULE untuk menentukan modul Python di mana peraturan itu berada. Dengan cara ini, Django boleh memuatkan peraturan secara automatik apabila ia bermula.

Ringkasan

Dalam rangka kerja Django, kawalan kebenaran ialah fungsi yang sangat penting dan penting. Melalui beberapa teknik yang diperkenalkan di atas, kita boleh melaksanakan fungsi kawalan kebenaran asas atau kompleks dengan mudah. Sama ada menggunakan sistem pengesahan terbina dalam, kawalan kebenaran berasaskan penghias, hujung belakang pengesahan tersuai, django-guardian atau django-rules, kita boleh memilih kaedah kawalan kebenaran yang paling sesuai berdasarkan keperluan perniagaan tertentu.

Atas ialah kandungan terperinci Teknik kawalan kebenaran dalam rangka kerja Django (Bahagian 2). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python vs C: Lengkung pembelajaran dan kemudahan penggunaanPython vs C: Lengkung pembelajaran dan kemudahan penggunaanApr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Python vs C: Pengurusan dan Kawalan MemoriPython vs C: Pengurusan dan Kawalan MemoriApr 19, 2025 am 12:17 AM

Python dan C mempunyai perbezaan yang signifikan dalam pengurusan dan kawalan memori. 1. Python menggunakan pengurusan memori automatik, berdasarkan pengiraan rujukan dan pengumpulan sampah, memudahkan kerja pengaturcara. 2.C memerlukan pengurusan memori manual, memberikan lebih banyak kawalan tetapi meningkatkan risiko kerumitan dan kesilapan. Bahasa mana yang harus dipilih harus berdasarkan keperluan projek dan timbunan teknologi pasukan.

Python untuk pengkomputeran saintifik: rupa terperinciPython untuk pengkomputeran saintifik: rupa terperinciApr 19, 2025 am 12:15 AM

Aplikasi Python dalam pengkomputeran saintifik termasuk analisis data, pembelajaran mesin, simulasi berangka dan visualisasi. 1.Numpy menyediakan susunan pelbagai dimensi yang cekap dan fungsi matematik. 2. Scipy memanjangkan fungsi numpy dan menyediakan pengoptimuman dan alat algebra linear. 3. Pandas digunakan untuk pemprosesan dan analisis data. 4.Matplotlib digunakan untuk menghasilkan pelbagai graf dan hasil visual.

Python dan C: Mencari alat yang betulPython dan C: Mencari alat yang betulApr 19, 2025 am 12:04 AM

Sama ada untuk memilih Python atau C bergantung kepada keperluan projek: 1) Python sesuai untuk pembangunan pesat, sains data, dan skrip kerana sintaks ringkas dan perpustakaan yang kaya; 2) C sesuai untuk senario yang memerlukan prestasi tinggi dan kawalan asas, seperti pengaturcaraan sistem dan pembangunan permainan, kerana kompilasi dan pengurusan memori manualnya.

Python untuk sains data dan pembelajaran mesinPython untuk sains data dan pembelajaran mesinApr 19, 2025 am 12:02 AM

Python digunakan secara meluas dalam sains data dan pembelajaran mesin, terutamanya bergantung pada kesederhanaannya dan ekosistem perpustakaan yang kuat. 1) PANDAS digunakan untuk pemprosesan dan analisis data, 2) Numpy menyediakan pengiraan berangka yang cekap, dan 3) SCIKIT-Learn digunakan untuk pembinaan dan pengoptimuman model pembelajaran mesin, perpustakaan ini menjadikan Python alat yang ideal untuk sains data dan pembelajaran mesin.

Pembelajaran Python: Adakah 2 jam kajian harian mencukupi?Pembelajaran Python: Adakah 2 jam kajian harian mencukupi?Apr 18, 2025 am 12:22 AM

Adakah cukup untuk belajar Python selama dua jam sehari? Ia bergantung pada matlamat dan kaedah pembelajaran anda. 1) Membangunkan pelan pembelajaran yang jelas, 2) Pilih sumber dan kaedah pembelajaran yang sesuai, 3) mengamalkan dan mengkaji semula dan menyatukan amalan tangan dan mengkaji semula dan menyatukan, dan anda secara beransur-ansur boleh menguasai pengetahuan asas dan fungsi lanjutan Python dalam tempoh ini.

Python untuk Pembangunan Web: Aplikasi UtamaPython untuk Pembangunan Web: Aplikasi UtamaApr 18, 2025 am 12:20 AM

Aplikasi utama Python dalam pembangunan web termasuk penggunaan kerangka Django dan Flask, pembangunan API, analisis data dan visualisasi, pembelajaran mesin dan AI, dan pengoptimuman prestasi. 1. Rangka Kerja Django dan Flask: Django sesuai untuk perkembangan pesat aplikasi kompleks, dan Flask sesuai untuk projek kecil atau sangat disesuaikan. 2. Pembangunan API: Gunakan Flask atau DjangorestFramework untuk membina Restfulapi. 3. Analisis Data dan Visualisasi: Gunakan Python untuk memproses data dan memaparkannya melalui antara muka web. 4. Pembelajaran Mesin dan AI: Python digunakan untuk membina aplikasi web pintar. 5. Pengoptimuman Prestasi: Dioptimumkan melalui pengaturcaraan, caching dan kod tak segerak

Python vs C: Meneroka Prestasi dan KecekapanPython vs C: Meneroka Prestasi dan KecekapanApr 18, 2025 am 12:20 AM

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa