Authentication backends 验证后端
本节详细介绍Django附带的身份验证后端。 有关如何使用它们以及如何编写自己的身份验证后端的信息,请参阅用户身份验证指南的其他身份验证源部分。
可用的身份验证后端
django.contrib.auth.backends
中有以下后端:
class ModelBackend
:
这是 Django 使用的默认身份验证后端。 它使用由用户标识符和密码组成的凭据进行身份验证。 对于 Django 的默认用户模型,用户标识符是用户名,对于自定义用户模型,它是由USERNAME_FIELD
指定的字段(请参阅自定义用户和身份验证)。
它还处理为用户User
和权限密码定义PermissionsMixin
的默认权限模型。
has_perm()
,get_all_permissions()
,get_user_permissions()
和get_group_permissions()
允许将对象作为对象特定权限的参数传递,但是如果obj
不是,则后端不会实现它们而不是返回一组空的权限 None
。
authenticate(username = None,password = None,** kwargs)
尝试通过调用User.check_password
验证密码用户名。 如果没有提供用户名,它将尝试使用密钥CustomUser.USERNAME_FIELD从kwargs
获取用户名。 返回经过身份验证的用户或无。
get_user_permissions(user_obj,obj =无)
返回user_obj
拥有自己的用户权限的一组权限字符串。 如果is_anonymous
或is_active
为False
则返回空集。
get_group_permissions(user_obj,obj = None)
返回user_obj
从其所属组的权限中获得的权限字符串集。 如果is_anonymous
或is_active
为False
则返回空集。
get_all_permissions(user_obj,obj = None)
返回user_obj
具有的权限字符串集,包括用户权限和组权限。 如果is_anonymous
或is_active
为False
则返回空集。
has_perm(user_obj,perm,obj = None)
使用get_all_permissions()
来检查user_obj
是否具有权限字符串perm
。 如果用户不是is_active
,返回False
。
has_module_perms(self,user_obj,app_label)
返回user_obj
是否具有应用app_label
的任何权限。
user_can_authenticate()
返回是否允许用户进行身份验证。 为了匹配禁止非活动用户登录的AuthenticationForm
的行为,此方法对于is_active = False
的用户返回False
。 允许没有is_active
字段的自定义用户模型。