37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from django.contrib.auth import get_user_model
|
||
from django.contrib.auth.backends import ModelBackend
|
||
from django.contrib.auth.hashers import check_password
|
||
|
||
UserModel = get_user_model()
|
||
|
||
class CustomBackend(ModelBackend):
|
||
"""
|
||
优化django原生认证,解决查询用户认证时查询无用的django内置权限(本系统有自己的权限设计)
|
||
"""
|
||
|
||
def authenticate(self, request, username=None, password=None, **kwargs):
|
||
try:
|
||
if username is None:
|
||
username = kwargs.get(UserModel.USERNAME_FIELD)
|
||
if username is None or password is None:
|
||
return
|
||
user = UserModel.objects.get(username=username)
|
||
if user.check_password(password) and self.user_can_authenticate(user):
|
||
return user
|
||
except UserModel.DoesNotExist:
|
||
return None
|
||
|
||
def _get_user_permissions(self, user_obj):
|
||
return []
|
||
|
||
def _get_group_permissions(self, user_obj):
|
||
return []
|
||
|
||
def _get_permissions(self, user_obj, obj, from_name):
|
||
return set()
|
||
|
||
def has_perm(self, user_obj, perm, obj=None):
|
||
return False
|
||
|
||
def has_module_perms(self, user_obj, app_label):
|
||
return False |