Django用户认证

Django用户认证系统

Django 自带一个用户认证系统。这个系统主要作用于用户账号、组、权限和基于cookie的用户会话。该篇博文将主要说明这个默认自带的用户认证系统是如何工作的,以及在自己的工程中如何扩展和自定义默认自带的用户认证系统。

概述:

Django认证系统处理认证和授权两个任务。简而言之,认证 是核实一个用户是谁;授权 是决定一个认证后的用户能做写什么。这里说的认证就是指包括这两个任务了。

认证系统的组成:

  • 用户
  • 权限:二进制标志位 说明 一个用户时候有权限去做一个任务
  • 组: 应用同一种标签和权限给多个用户的通用方法
  • 一个可配置的哈希密码系统
  • 用户登录的表单和视图工具,限制内容
  • 可插拔的后台系统

Django的认证系统实现的功能非常通用, 它没有提供一些在web认证系统常见的功能。但这些常见的问题,都有第三方提供了解决方案:

  • 密码强度检查
  • 登录意图的限制
  • 第三方的权限认证(比如 OAuth)

安装

认证模块是作为django.contrib.auth中的模块绑定在django中的。运行django-admin startproject命令创建project,默认的,认证模块需要的配置已经包含在settings.py里面,有两个组件会列在settings.py文件中的INSTALLED_APPS里面:

  1. ‘django.contrib.auth’ 包含了认证框架的核心和它本子默认的模型
  2. ‘django.contrib.contenttypes’ 是Django的内容类型系统,它可以使你创建的模型和权限结合起来

还有下面这几个选项在MIDDLEWARE_CLASS 配置内:

  1. SessionMiddleware 在请求中管理会话
  2. AuthenticationMiddleware 将用户和使用会话的请求结合起来
  3. SessionAuthenticationMiddleware 记录 在修改用户密码之后,用户退出其他的会话。

以上都是运行django-admin startproject命令会自动配置的,再运行manage.py migrate命令将会为你创建安装的apps中的models创建数据库表和权限。

用法:

使用Django的默认支持

  • 用用户对象工作
  • 权限和授权
  • web请求认证
  • 在admin后台管理用户

默认支持 的 API 参考手册

自定义用户和认证

Django中的密码管理

原文地址:https://www.cnblogs.com/haoshine/p/5643032.html