Django中的用户认证

Django 自带一个用户验证系统。它负责处理用户账号、组、权限和基于 cookie 的用户会话。文档的这部分解释了默认的实现如何开箱即用,以及如何 扩展和自定义 以满足你的项目需求。

概况

Django 验证系统处理验证和授权。简单来说,验证检验用户是否是他们的用户,授权决定已验证用户能做什么。这里的术语验证用于指代这两个任务。

认证系统由以下部分组成:

  • 用户
  • 权限:二进制(是/否)标识指定用户是否可以执行特定任务。
  • 组:将标签和权限应用于多个用户的一般方法。
  • 可配置的密码哈希化系统
  • 为登录用户或限制内容提供表单和视图工具
  • 可插拔的后端系统

Django 里的验证系统旨在通用化,不提供一些常见的 web 验证系统的特性。其中一些常见问题的解决方案已在第三方包中实现。

  • 密码强度检查
  • 限制登录尝试
  • 针对第三方的身份验证(例如OAuth)
  • 对象级权限

安装

验证系统被捆绑为 django.contrib.auth 的 Django contrib 模块。默认情况下,所需的配置以及包含在 django-admin startproject 生成的 settings.py 中,在 INSTALLED_APPS 配置列出了以下两个条目:

  1. 'django.contrib.auth' 包含了验证框架的内核和它的默认模型。
  2. 'django.contrib.contenttypes' 是 Django content type system ,允许你创建的模型和权限相关联。

这些条目在你的 MIDDLEWARE 设置中:

  1. SessionMiddleware 通过请求管理 sessions
  2. AuthenticationMiddleware 使用会话将用户和请求关联。

有了这些设置,运行命令 manage.py migrate 为auth相关模型创建必要的数据表,并为已安装应用中定义的任何模型创建许可。

用法

使用 Django 的默认实现

默认实现的 API 参考

自定义 Users 和认证

Django 中的密码管理