9.1 用户与身份认证
2025-02-17
创建项目时使用createsuperuser命令创建了超级用户、视图函数中通过HttpRequest的user属性获取了当前的登录用户等。这里的用户其实就是Django框架中内置的User Model
9.1.1 用户与用户组
用户认证系统定义个三个Model用来表示用户与用户关系
User:用户
AnonymousUser:匿名用户
Group:用户组
is_staff属性:定义用户能否登录管理后台(True/False)
is_active属性:定义用户是否属于激活状态(True/False)
# 创建用户 from django.contrib.auth.models import User user = User.objects.create_user('bbs','bbs@django.com','django_bbs') user.set_password('bbs_django') user.save()Group只定义了一个基础属性字段name,用于标识组名。要求唯一性,对字符内容没有做要求
用户组的概念主要有两个作用。
(1)将一类用户加入一个用户组中,方便对这一类用户的统一操作,如发送邮件可以指定用户组而不需要逐个添加用户。
(2)加入某一个用户组的用户自动获得当前用户组所拥有的权限
# 例子:创建一个用户组,并将之前的bbs添加到组 from django.contrib.auth.models import Group group = Group.objects.create(name='bbs') user = User.objects.get(username='bbs') # 获取user user.groups.add(group) # 添加到组 user.groups.all()
9.1.2 用户身份认证
根据给定的条件或属性尝试获取用户对象的行为被称为用户认证,是非常常见的功能
- 提供了
authenticate方法用于对用户身份进行认证 - authenticate接受:username和password作为参数
- 通过认证:返回User对象
- 失败:返回None