auth模块

一、什么是author模块

Auth模块是Django自带的用户认证模块,可以实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。默认使用 auth_user 表来存储用户数据。

二、auth模块的使用

1、创建超级用户(create_superuser())

创建超级用户就是在auth_user表中插入数据,密码是加密的,因此不能手动在数据库中插入数据

(1)用命令创建

python3 manage.py createsuperuser

(2)用Python代码创建

from django.contrib.auth.models import User
user = User.objects.create_superuser(username='用户名',password='密码',email='邮箱',...)

2、验证用户(authenticate())

验证用户名以及密码是否正确,一般需要username 、password两个关键字参数。如果认证成功(用户名和密码正确有效),便会返回一个 User 对象

from django.contrib import auth
user = auth.authenticate(request, username=name, password=pwd)

相当于是在数据库中查询:

user=models.User.objects.filter(name=name,pwd=pwd).first()

3、登录用户(login())

该函数接受一个HttpRequest对象,以及一个经过认证的User对象。

该函数实现一个用户登录的功能。它本质上会在后端为该用户生成相关session数据。

user = auth.authenticate(username=username, password=password)
if user is not None: login(request, user) return HttpResponse('登录成功')

4、登录成功

一旦登录成功,调了这个函数login(request,user),在以后的视图类(函数)中的request中就会有一个user对象,就是当前已登录的用户对象。

5、注销(logout())

该函数接受一个HttpRequest对象,无返回值。

当调用该函数时,当前请求的session信息会全部清除,即调用request.session.flush()。该用户即使没有登录,使用该函数也不会报错。

auth.logout(request)

6、登录认证装饰器

快捷的给某个视图添加登录校验。

若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。

如果需要自定义登录的URL,则需要在settings.py文件中通过LOGIN_URL进行修改。

from django.contrib.auth.decorators import login_required@login_required(redirect_field_name='eee',login_url='/login/')
# redirect_field_name:修改?后面的key值,一般不回去修改 # login_url:如果没有登录,跳转到的页面 # login_url局部配置  @login_required(login_url='/login/') # login_url全局配置 # 在setting文件中配置 LOGIN_URL='/login/' 直接使用 @login_required

7、创建普通用户(create_user())

from django.contrib.auth.models import User
user = User.objects.create_user(username='用户名',password='密码',email='邮箱',...)

8、校验密码(check_password())

# 先拿到用户(可以是登录用户,可以现查)
user = request.user
# 或者
user = authenticate(username=username, password=password)pwd = request.POST.get('pwd')
ret = user.check_password(pwd)

9、修改密码(set_password())

注意:设置完一定要调用用户对象的save方法!!!

修改密码时,可以先校验原密码输入是否正确,原密码正确再开始修改密码

user.set_password(pwd)
user.save()

10、is_authenticated()

用来判断当前请求是否通过了认证。如果通过验证,是true,反之false

ret = request.user.is_authenticated()

11、删除用户

删除用户和用orm在表中删除数据一样

12、User对象的其他属性

# 在网站上线以前,将is_active和is_staff设置为False
is_active    # 禁止登录网站(用户还存在,封号)
is_staff    # 是否对网站有管理权限(能不能登录admin)request.user.is_active = False request.user.is_staff = False 

三、扩展默认的auth_user表

1、方法一:定义一个表模型,跟User一对一关联

from django.contrib.auth.models import Userclass UserDetail(models.Model): phone=models.CharField(max_length=32) # 一对一跟auth_user表做关联 # 如果是从外部引入的表模型,是不能加引号的 # 如果加引号,只是在当前model找 user=models.OneToOneField(to=User) 

2、方法二:定义一个表模型,继承(AbstractUser)

from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser): # username,password...都继承了 phone=models.CharField(max_length=32) sex=models.BooleanField() 

注意:

  • 一旦我们通过继承来实现扩展auth_user表,那么做数据库迁移,以后就没有auth_user这个表了,以后认证组件用的表就是UserInfo。原来使用 auth_user 表模型的地方全部要用新的表模型——UserInfo

  • 引用Django自带的User表,继承使用时需要设置,在setting中对新表进行配置:

AUTH_USER_MODEL ='app01.UserInfo'

博客内容仅供参考,部分参考他人优秀博文,仅供学习使用

转载于:https://www.cnblogs.com/zhuzhiwei-2019/p/10779182.html

Django框架(十八)—— auth框架:用户登录、注册、认证相关推荐

  1. [golang gin框架] 29.Gin 商城项目-用户登录,注册操作

    一.用户登录,注册界面展示说明 先看登录,注册界面以及相关流程,再根据流程写代码,一般网站的登录,注册功能都会在一个页面进行操作,还有的是在几个页面进行操作,这里讲解在几个页面进行注册的操作,步骤如下 ...

  2. java实现用户登录注册功能(用集合框架来实现)

    需求:实现用户登录注册功能(用集合框架来实现) 分析: A:需求的类和接口 1.用户类 UserBean 2.用户操作方法接口和实现类 UserDao UserDaoImpl 3.测试类 UserTe ...

  3. MVC框架实现用户登录注册功能(连接数据库)

    目录 一.简单理解MVC框架 二.项目结构 三.项目源码 3.1 User 3.2 UserDao 3.3 RegisterDao 3.4 servletControll 3.5 servletCon ...

  4. vue+node---使用element框架实现的前后台用户登录注册功能

    为了更进一步清晰地了解前台数据向后台提交的过程,更好地加强巩固前端开发学习,整理了基础的[前后台用户登录注册功能]实现代码.后台通过node.js开发,数据存储在sqlite中,前台vue+eleme ...

  5. 十八.用户注册 ---- 用户名/用户密码/手机号验证 2021-04-07

    十八.用户注册 ---- 用户名/用户密码/手机号验证 引言 注:该篇文章接上一篇 十七.用户注册 ---- 图形验证码 在上一篇文章我们实现了用户注册中的图形验证码过程,接下来我们要实现用户名验证, ...

  6. 【转载】 javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册 - 孤傲苍狼 - 博 http://www.cnblogs.com/xdp-gacl/

    javaweb学习总结(二十二)--基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+Ja ...

  7. Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复)

    Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=168& ...

  8. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  9. javaweb学习总结(二十二):基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  10. day14【前台】用户登录注册

    day14[前台]用户登录注册 1.会员登录框架 2.发送短信(测试) 2.1.去哪儿找API 上阿里云:直接搜索[短信接口] 随便找一个就行,往下翻有API接口的使用方法 2.2.测试API 2.2 ...

最新文章

  1. Swift - 使用CollectionView实现图片Gallery画廊效果(左右滑动浏览图片)
  2. 315道Python常见面试题
  3. 重构老系统遗留代码的一些方法学习笔记
  4. java rsa 验_Java使用RSA加密解密签名及校验
  5. 5-7激活层-BN层-FC层-损失层
  6. linux命令 查找包含指定字符串的文件
  7. 连接手表_荣耀手表2 一键连接你的手上智慧新生活
  8. 磁珠 符号_如何理解电子元件磁珠?
  9. android小游戏 猜拳游戏设计
  10. 解决vue方法在谷歌浏览器中无法正常实现的问题
  11. 板绘萌新拿到数位板之后,不知道先做什么?这些板绘学习小技巧必须要知道
  12. JavaWeb笔记01(mysql)
  13. Win10锁屏壁纸不能自动更新最全处理方法
  14. matlab怎么求解多元非线性方程组,用matlab求解多元非线性方程组(多个方程组)问题...
  15. Mac录屏减少文件体积和格式转换
  16. 苹果iOS越狱后没有声音的解决办法
  17. 股票数据的获取以及下载保存
  18. Unity游戏开发视频教程 第2卷
  19. Android:线性布局介绍,线性布局weight属性,线性布局微调参数gravity,线性布局divider
  20. 太为难我了,阿里面试了7轮...

热门文章

  1. LeetCode Algorithm 206. 反转链表
  2. 排序算法 —— 归并排序
  3. 《C champion》C语言发展
  4. Java面向对象(五)abstract --- 抽象
  5. 【Qt】数据库用户接口层
  6. mysql 存byte数组中_新人求大神教教:如何把一个一维数组存入mysql 表格中
  7. python安装方法3.8.2_Linux安装Python3.8.1的教程详解
  8. android jni 调用java_Android JNI开发系列(九)JNI调用Java的静态方法实例方法
  9. mysql ocp 认证 题库_MySQL 8 OCP(1Z0-908)认证考试题库原题(第10题)
  10. 线性代数知识点总结_2020考研数学线性代数强化复习重点知识点总结