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 的默认实现(Using Django’s default implementation

默认实现的 API 参考(API reference for the default implementation

自定义的用户和验证(Customizing Users and authentication

Django 中的密码管理(Password management in Django