---
title: "Django中的用户认证"
version: 3.0
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/3.0/topics/auth/
canonical: https://djangodocs.dev/zh-hans/3.0/topics/auth/
---
# Django中的用户认证

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

## 概况

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

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

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

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

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

## 安装

验证系统被捆绑为 `django.contrib.auth` 的 Django contrib 模块。默认情况下，所需的配置以及包含在 [`django-admin startproject`](/zh-hans/3.0/ref/django-admin/#django-admin-startproject) 生成的 `settings.py` 中，在 [`INSTALLED_APPS`](/zh-hans/3.0/ref/settings/#std-setting-INSTALLED_APPS) 配置列出了以下两个条目：

1. `'django.contrib.auth'` 包含了验证框架的内核和它的默认模型。
2. `'django.contrib.contenttypes'` 是 Django [content type system](/zh-hans/3.0/ref/contrib/contenttypes/) ，允许你创建的模型和权限相关联。

这些条目在你的 [`MIDDLEWARE`](/zh-hans/3.0/ref/settings/#std-setting-MIDDLEWARE) 设置中：

1. [`SessionMiddleware`](/zh-hans/3.0/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware) 通过请求管理 [sessions](/zh-hans/3.0/topics/http/sessions/) 。
2. [`AuthenticationMiddleware`](/zh-hans/3.0/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware) 使用会话将用户和请求关联。

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

## 用法

使用 Django 的默认实现（[Using Django's default implementation](/zh-hans/3.0/topics/auth/default/)）

- 使用用户对象（:ref:Working with User objects ）
- 权限和授权（[Permissions and authorization](/zh-hans/3.0/topics/auth/default/#topic-authorization)）
- 请求中的验证（[Authentication in web requests](/zh-hans/3.0/topics/auth/default/#auth-web-requests)）
- 在管理系统中管理用户（[Managing users in the admin](/zh-hans/3.0/topics/auth/default/#auth-admin)）

默认实现的 API 参考（[API reference for the default implementation](/zh-hans/3.0/ref/contrib/auth/)）

自定义的用户和验证（[Customizing Users and authentication](/zh-hans/3.0/topics/auth/customizing/)）

Django 中的密码管理（[Password management in Django](/zh-hans/3.0/topics/auth/passwords/)）
