Django中的用户身份验证

Django附带了一个用户认证系统。它处理用户帐户、组、权限和基于cookie的用户会话。文档的这一部分解释了默认实现是如何开箱即用的,以及如何 extend and customize 它能满足你的项目需求。

概述

Django认证系统处理认证和授权。简单地说,身份验证验证验证一个用户是他们声称的用户,而授权决定了一个经过身份验证的用户可以做什么。这里,术语“身份验证”用于指代这两个任务。

认证系统包括:

  • 用户

  • 权限:二进制(是/否)标志,指示用户是否可以执行某项任务。

  • 组:将标签和权限应用于多个用户的通用方法。

  • 可配置密码哈希系统

  • 用于登录用户或限制内容的表单和视图工具

  • 可插拔后端系统

Django的认证系统旨在非常通用,不提供Web认证系统中常见的一些功能。一些常见问题的解决方案已在第三方软件包中实施:

  • 密码强度检查

  • 限制登录尝试

  • 针对第三方的身份验证(例如OAuth)

  • 对象级权限

安装

身份验证支持捆绑在 django.contrib.auth . 默认情况下,所需配置已包含在 settings.py 生成的 django-admin startproject ,这包括您的 INSTALLED_APPS 设置:

  1. 'django.contrib.auth' 包含身份验证框架的核心及其默认模型。

  2. 'django.contrib.contenttypes' 是Django content type system ,允许将权限与您创建的模型关联。

这些东西在你的 MIDDLEWARE 设置:

  1. SessionMiddleware 管理 sessions 跨请求。

  2. AuthenticationMiddleware 使用会话将用户与请求关联。

在这些设置就绪的情况下,运行命令 manage.py migrate 为已安装的应用程序中定义的任何模型的身份验证相关模型和权限创建必要的数据库表。

使用

Using Django's default implementation

API reference for the default implementation

Customizing Users and authentication

Password management in Django