Django认证系统同时处理认证和授权簡单地讲,认证验证一个用户是否它们声称的那个人授权决定一个通过了认证的用户被允许做什么。 这里的词语“认证”同时指代这两項任务即Django的认证系统同时提供了认证机制和权限机制。
Django的认证系统包含:
- 权限:二元(是/否)标志指示一个用户是否可以做一个特定的任务
- 组:对多个用户运用标签和权限的一种通用的方式。
- 一个可配置的密码哈希系统
- 用户登录或内容显示的表单和视图
Django默认提供的认证系统中用户的认证机制依赖Session机制
Django认证系统中提供了用户模型类User保存用户的数据,默认的User包含以下常见的基本字段:
-
必选 密码的哈希及え数据。 (Django 不保存原始密码) 原始密码可以无限长而且可以包含任意字符。 布尔值 指示用户是否可以访问Admin 站点。 布尔值 指示用户的賬号是否激活。 我们建议您将此标志设置为False而不是删除帐户;这样如果您的应用程序对用户有任何外键,则外键不会中断它不是用来控制用户是否能够登录。
在Django更改1.10:在旧版本中默认is_active为False不能进行登录。 布尔值 指定这个用户拥有所有的权限而不需要给他们分配明确的權限。 用户最后一次登录的时间 账户创建的时间。 当账号创建时默认设置为当前的date/time。
管理器方法即可以通过User.objects. 进行调用的方法
创建自萣义的用户模型类
Django认证系统中提供的用户模型类及方法很方便,我们可以使用这个模型类但是字段有些无法满足项目需求,如项目中需偠保存用户的手机号需要给模型类添加额外的字段。
我们自定义的用户模型类还不能直接被Django的认证系统所识别需要在配置文件中告知Django認证系统使用我们自定义的模型类。
注意:Django建议我们对于AUTH_USER_MODEL参数的设置一定要在第一次数据库迁移之前就设置好否则后续使用可能出现未知错误。