Django——Auth模块(用户认证模块)
1、Auth模块简介
auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象。
而有了auth模块之后就可以很轻松的去验证用户的登录信息是否存在于数据库中。
除此之外,auth还对session做了一些封装,方便我们校验用户是否已登录。
2、Auth认证相关的数据库表
auth_user表就是用户表

3、导入auth模块
# 认证模块
from django.contrib import auth # 对应数据库用户表,可以继承扩展
from django.contrib.auth.models import User
4、命令行创建超级用户:
python manage.py createsuperuser
5、用户认证的相关操作:
(1)创建用户(用户注册)
create():创建一个普通用户,密码是明文的。
create_user():创建一个普通用户,密码是密文的。
create_superuser():创建一个超级用户,密码是密文的,要多传一个邮箱 email 参数。
例子:
from django.shortcuts import render,HttpResponse
from django.contrib import auth
from django.contrib.auth.models import User def zhuce(request):
if request.method == 'GET':
return render(request,'zhuce.html')
else:
name = request.POST.get('name')
password = request.POST.get('password')
user = User.objects.create_user(username=name,password=password)
# user.save() 可以不用写save()也可以创建成功
return HttpResponse('注册成功')
(2)用户认证(判断用户名和密码)
# auth.authenticate(username,password)
# 将输入的密码转为密文去认证,认证成功返回用户对象,失败则返回None
例子:
from django.shortcuts import render,HttpResponse
from django.contrib import auth def login(request):
if request.method == 'GET':
return render(request,'login.html')
else:
name = request.POST.get('name')
password = request.POST.get('password')
user = auth.authenticate(username=name,password=password)
if user:
return HttpResponse('登录成功')
else:
return HttpResponse('登录失败')
(3)保持登录状态
auth.login() # 该函数接受一个HttpRequest对象,以及一个认证了的User对象。此函数使用django的session框架给某个已认证的用户附加上session id等信息。
例子:
from django.shortcuts import render,HttpResponse
from django.contrib import auth def login(request):
if request.method == 'GET':
return render(request,'login.html')
else:
name = request.POST.get('name')
password = request.POST.get('password')
user = auth.authenticate(username=name,password=password)
if user:
auth.login(request,user) #写session等操作并保持登录状态
return HttpResponse('保持登录成功')
else:
return HttpResponse('登录失败')
(4)注销登录状态
auth.logout() # 该函数接受一个HttpRequest对象,无返回值。当调用该函数时,当前请求的session信息会全部清除,若要登录则需要重新登录。该用户即使没有登录,使用该函数也不会报错。
例子:
from django.shortcuts import render,HttpResponse
from django.contrib import auth def zhuxiao(request):
auth.logout(request)
return HttpResponse('注销成功')
(5)判断是否登录
request.user.is_authenticated()
(6)获取登录用户对象
def test(request):
user = request.user #获取当前登录的用户对象
print(user) #打印当前登录的用户对象
print(user.username) #打印当前登录的用户对象的用户名
print(user.password) #打印当前登录的用户对象的密码
return HttpResponse('OK')

(7)检查用户的密码是否正确
auth 提供的一个检查密码是否正确的方法,需要提供当前请求用户的密码。密码正确返回True,否则返回False。
def test(request):
user = request.user
sf = user.check_password('123456')
print(sf)
return HttpResponse('OK')

(8)修改密码
set_password(password) auth 提供的一个修改密码的方法,接收要设置的新密码作为参数。注意:设置完一定要调用用户对象的save方法!!!
def test(request):
user = request.user
user.set_password('1234567') # 参数为新密码
user.save()
return HttpResponse('OK')
Django——Auth模块(用户认证模块)的更多相关文章
- Django之auth模块用户认证模块
一.Auth模块 1)auth模块是什么.登录后台使用的账号密码,则就是使用的auth模块创建的表 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站 ...
- (30)auth模块(django自带的用户认证模块)
Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...
- auth模块用户认证
一.auth模块什么 auth模块时django自带的用户认证模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功 ...
- Django基础八之认证模块---auth
Django基础八之认证模块---auth 目录 Django基础八之认证模块---auth 1. auth介绍 2. autho常用操作 2.1 创建用户 2.2 验证用户 2.3 验证用户是否登录 ...
- django rest framework用户认证
django rest framework用户认证 进入rest framework的Apiview @classmethod def as_view(cls, **initkwargs): &quo ...
- laravel7使用auth进行用户认证
原文地址:https://www.wjcms.net/archives/laravel7使用auth进行用户认证 laravel7 版本移除了 auth,大家都知道以前版本是直接使用 php arti ...
- python2.0_day18_Django自带的用户认证模块的使用
用户验证我们基于一个项目来学习利用Django框架中的user表实现用户认证Django练习小项目:学员管理系统设计开发 项目需求: 1.分讲师\学员\课程顾问角色, 2.学员可以属于多个班级,学员成 ...
- Django 学习之用户认证组件auth与User对象
一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个. 1 .authenticate() ...
- SpringBoot+SpringSecurity之多模块用户认证授权同步
在之前的文章里介绍了SpringBoot和SpringSecurity如何继承.之后我们需要考虑另外一个问题:当前微服务化也已经是大型网站的趋势,当我们的项目采用微服务化架构时,往往会出现如下情况: ...
随机推荐
- GlassFish 任意文件读取漏洞
poc https://192.168.49.2:4848/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0 ...
- InnoDB锁机制-转载
InnoDB锁机制 1. 锁类型 锁是数据库区别与文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问. InnoDB使用的锁类型,分别有: 共享锁(S)和排他锁(X) 意向锁(IS和IX) 自 ...
- 计算机网络模型和5G知识
目录 一.网络布线及信号传输 1.信号 2.传输介质 2.1双绞线 2.2光纤 2.3常见性问题 三.无线传播介质 四.综合布线系统 五.计算机的数制度以及运算 一.网络布线及信号传输 1.信号 频率 ...
- Windows内核开发-5-(2)-内核模式调试
Windows内核开发-5-(2)-内核模式调试 普通用户模式的调试,采取的是给进程添加一个线程来挂起断点,作为一个调试器的线程在进程中使用.照这样来类推,对操作系统调试相当于添加一个进程来限制操作系 ...
- burp暴力破解之md5和绕过验证码
Burpsuite是一个功能强大的工具,也是一个比较复杂的工具 本节主要说明一下burp的intruder模块中的2个技巧 1.md5加密 我们在payload Processing中的add选项可以 ...
- RHCSA_DAY10
分区过程 添加新硬盘--分区--格式化文件系统--挂载使用 扇区是磁盘存储数据的最小单元,默认一个扇区可以存储512字节的数据 磁盘类型介绍 IDE接口类型:主要用于个人家用计算机领域,优点价格便宜, ...
- 双非本科Android开发,如何逆袭拿到大厂 Offer?
从2020年3月18日投出第一份暑期实习简历至今,已经过去400多天.我也尘埃落定,即将去CVTE做Android开发. 休息了很长时间,如今已经能够很平静地回首这段历程,写下这篇文,致敬曾经走过的漫 ...
- Http协议中的CharacterEncoding、Content-Encoding和Transfer-Encoding
https://www.cnblogs.com/jinzhiming/p/5765672.html https://www.jianshu.com/p/e918a65b617f https://www ...
- 21JavaScript笔记(1)
JavaScript 基于对象和事件驱动 简单描述性语言 函数优先 解释型(即时编译型) 具有安全性的脚本语言 1.js组成 核心语法(ECMAScript):开放的.标准的脚本语言规范,主要包含了语 ...
- sqli-labs lesson 32-37
宽字节注入: 原理:mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%aa%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围).我们在过滤 ' 的时候(也就是从防御的角度 ...