Django用户认证系统
Django 自带一个用户认证系统。这个系统主要作用于用户账号、组、权限和基于cookie的用户会话。该篇博文将主要说明这个默认自带的用户认证系统是如何工作的,以及在自己的工程中如何扩展和自定义默认自带的用户认证系统。
概述:
Django认证系统处理认证和授权两个任务。简而言之,认证 是核实一个用户是谁;授权 是决定一个认证后的用户能做写什么。这里说的认证就是指包括这两个任务了。
认证系统的组成:
- 用户
- 权限:二进制标志位 说明 一个用户时候有权限去做一个任务
- 组: 应用同一种标签和权限给多个用户的通用方法
- 一个可配置的哈希密码系统
- 用户登录的表单和视图工具,限制内容
- 可插拔的后台系统
Django的认证系统实现的功能非常通用, 它没有提供一些在web认证系统常见的功能。但这些常见的问题,都有第三方提供了解决方案:
- 密码强度检查
- 登录意图的限制
- 第三方的权限认证(比如 OAuth)
安装
认证模块是作为django.contrib.auth中的模块绑定在django中的。运行django-admin startproject命令创建project,默认的,认证模块需要的配置已经包含在settings.py里面,有两个组件会列在settings.py文件中的INSTALLED_APPS里面:
- ‘django.contrib.auth’ 包含了认证框架的核心和它本子默认的模型
- ‘django.contrib.contenttypes’ 是Django的内容类型系统,它可以使你创建的模型和权限结合起来
还有下面这几个选项在MIDDLEWARE_CLASS 配置内:
- SessionMiddleware 在请求中管理会话
- AuthenticationMiddleware 将用户和使用会话的请求结合起来
- SessionAuthenticationMiddleware 记录 在修改用户密码之后,用户退出其他的会话。
以上都是运行django-admin startproject命令会自动配置的,再运行manage.py migrate命令将会为你创建安装的apps中的models创建数据库表和权限。
用法:
使用Django的默认支持
- 用用户对象工作
- 权限和授权
- web请求认证
- 在admin后台管理用户
默认支持 的 API 参考手册
自定义用户和认证
Django中的密码管理