


Teknik 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.
- 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']
- 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.
- 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!

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 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.

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.

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 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.

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.

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 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.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

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
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa