Django_内置的用户认证系统

目录

一、用户对象

1. 创建用户

2. 修改密码

3. 用户验证

二、权限与授权

1. 默认权限

2. 用户组

3. 在代码中创建权限

4. 权限缓存

三、在视图中认证用户

1、登录用户

2、注销用户

3、用户登录的访问限制

3.1、原始的办法

3.2、函数视图使用login_required装饰器

3.3、类视图继承LoginRequiredMixin

4、用户权限的访问限制

5、认证视图

源码等资料获取方法


Django内置的用户认证系统,可用于处理用户账户、群组、许可和基于cookie的用户会话。

Django的认证系统包含了身份验证和权限管理两部分:

  • 身份验证用于核实某个用户是否合法
  • 权限管理决定一个合法用户具有哪些权限

Django的认证系统主要包括下面几个部分:

  • 用户
  • 许可
  • 可配置的密码哈希系统
  • 用于用户登录或者限制访问的表单和视图工具
  • 可插拔的后台系统

默认情况下,使用django-admin startproject命令后,认证相关的模块已经自动添加到settings文件内了,如果没有的话,请手动添加。

settings.INSTALLED_APPS配置项中添加:

  • 'django.contrib.auth': 包含认证框架的核心以及默认模型
  • 'django.contrib.contenttypes':内容类型系统,用于给模型关联许可

settings.MIDDLEWARE配置项中添加:

  • 'django.contrib.sessions.middleware.SessionMiddleware':通过请求管理会话
  • 'django.contrib.auth.middleware.AuthenticationMiddleware':将会话和用户关联

当配置正确后,运行manage.py migrate命令,创建用户认证系统相关的数据库表以及分配预定义的权限。

一、用户对象

用户对象是Django认证系统的核心,在Django的认证框架中只有一个用户模型也就是User模型,它位于django.contrib.auth.models

注意:本节内容叙述的所有功能,都是基于这个User模型的,和这个User模型没有任何关系的自定义用户模型是无法使用Django内置的认证系统功能的!

用户模型主要有下面几个字段:

  • username
  • password
  • email
  • first_name
  • last_name

1. 创建用户

可使用create_user()方法创建一个新用户:

PS D:\_git\djangodemo> python .\manage.py shell
Python 3.9.9 (tags/v3.9.9:ccb0e6a, Nov 15 2021, 18:08:50) [MSC v.1929 64 bit (AMD64)] on win32

>>> from django.contrib.auth.models import User                                      
>>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
>>> user.last_name = 'Lennon'
>>> user.save()

查看auth_user表,可以看到创建的用户

2. 修改密码

Django默认会对密码进行加密,因此,不要在数据库中直接修改密码。

要修改密码,有两个办法:

  • 使用命令行: python manage.py changepassword username。如果不提供用户名,则会尝试修改当前系统用户的密码

  • 使用set_password()方法:
from django.co
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值