Django(part48)--用户认证系统
学习笔记,仅供参考
文章目录
- 用户认证系统
- User模型类
- auth基本模型操作
- 创建用户
- 删除用户
- 修改密码
- 检查密码是否正确
用户认证系统
Django自带一个用户认证系统,它处理用户账号、组、权限以及基于cookie的用户会话。
作用
添加普通用户和超级用户
修改密码
登陆和退出管理
查看已登陆用户
User模型类
- auth应用
现在,我们看一下mybookstore数据库下的数据表:
mysql> show tables;
+----------------------------+
| Tables_in_mybookstore |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| bookstore_book |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| userinfo_user |
+----------------------------+
12 rows in set (0.00 sec)
我们知道Django对这些数据表的命名规则为应用名_类名
,由上面的输出结果,我们发现前6个数据表都是以auth为开头的,这是因为Django自动的给我们创建了一个应用auth,这是一个用户验证的APP,在它的models.py模块中有一个User模型类,我们可以导入该类,帮助我们完成用户验证的工作。
- User模型类的导入
from django.contrib.auth.models import User
- User对象的基本属性
属性名 | 类型 | 是否必须存在 |
---|---|---|
username | 用户名 | 是 |
password | 密码 | 是 |
邮箱 | 可选 | |
first_name | 名 | 可选 |
last_name | 姓 | 可选 |
is_superuser | 是否是管理员(超级用户)帐号(/admin) | 可选 |
is_staff | 是否可以访问admin管理界面 | 可选 |
is_active |
是否是活跃用户,默认True。 服务器端一般不会轻易删除用户,而是将用户的is_active设为False,这样用户将处于不可用状态。 |
可选 |
last_login | 上一次的登录时间 | 可选 |
date_joined | 用户创建的时间 | 可选 |
还记得我们在学习admin后台数据库管理时的一条创建管理员帐号的命令么:
python manage.py createsuperuser
这条命令其实就相当于创建了一个User对象,即在mysql的auth_user数据表中添加了一条用户记录.
- 数据库的表现形式
现在,我们看一下mysql中的auth_user数据表:
mysql> desc auth_user;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| password | varchar(128) | NO | | NULL | |
| last_login | datetime(6) | YES | | NULL | |
| is_superuser | tinyint(1) | NO | | NULL | |
| username | varchar(150) | NO | UNI | NULL | |
| first_name | varchar(30) | NO | | NULL | |
| last_name | varchar(150) | NO | | NULL | |
| email | varchar(254) | NO | | NULL | |
| is_staff | tinyint(1) | NO | | NULL | |
| is_active | tinyint(1) | NO | | NULL | |
| date_joined | datetime(6) | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
11 rows in set (0.02 sec)
可以看到id为11位的整形,password最多可以存储128个字符,username最多可以存储150个字符等等…
auth基本模型操作
创建用户
- 创建普通用户create_user
from django.contrib.auth import models
user = models.User.objects.create_user(username='用户名', password='密码', email='邮箱',...)
...
user.save()
- 创建超级用户create_superuser
from django.contrib.auth import models
user = models.User.objects.create_superuser(username='用户名', password='密码', email='邮箱',...)
...
user.save()
删除用户
from django.contrib.auth import models
try:user = models.User.objects.get(username='用户名')user.is_active = False #使当前用户无效user.save()print("删除普通用户成功!")
except:print("删除普通用户失败")
修改密码
from django.contrib.auth import models
try:user = models.User.objects.get(username='用户名')user.set_password('新密码')#Django会利用set_password方法对新密码进行加密#所以,我们不能用user.password的方法修改密码user.save()return HttpResponse("修改密码成功!")
except:return HttpResponse("修改密码失败!")
检查密码是否正确
from django.contrib.auth import models
try:user = models.User.objects.get(username='用户名')if user.check_password('输入的密码'): #成功返回True,失败返回False#Django会先对输入的密码进行加密#然后再对保存在数据库中的加密后密码进行比较return HttpResponse("密码正确")else:return HttpResponse("密码错误")
except:return HttpResponse("没有此用户!")
Django(part48)--用户认证系统相关推荐
- Django默认用户认证系统和用户模型类
Django默认用户认证系统和用户模型类 1.Django默认用户认证系统 Django自带用户认证系统 Django认证系统位置 Django认证系统同时处理认证和授权 Django认证系统包含的内 ...
- django用户认证系统——登录4
用户已经能够在我们的网站注册了,注册就是为了登录,接下来我们为用户提供登录功能.和注册不同的是,Django 已经为我们写好了登录功能的全部代码,我们不必像之前处理注册流程那样费劲了.只需几分钟的简单 ...
- django用户认证系统——拓展 User 模型2
Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...
- django(权限、认证)系统——用户Login,Logout
django(权限.认证)系统--用户Login,Logout 上面两篇文章,讲述的Django的Authentication系统的核心模型对象User API和相关的使用,本文继续深入,讨论如何在W ...
- django(权限、认证)系统—— 基于Authentication backends定制
django(权限.认证)系统-- 基于Authentication backends定制 在这篇文章中,我们进行最后关于DjangoPermission系统的探讨,来谈谈关于Permission系统 ...
- Django的身份认证系统
1 . 在Django中使用身份认证系统 Django的身份认证系统实际上是一个app,该app叫做django.contrib.auth,它在django contrib模块下 使用时只需要在set ...
- python 全栈开发,Day79(Django的用户认证组件,分页器)
一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...
- Laravel核心代码学习--用户认证系统(基础介绍)
用户认证系统(基础介绍) 使用过Laravel的开发者都知道,Laravel自带了一个认证系统来提供基本的用户注册.登录.认证.找回密码,如果Auth系统里提供的基础功能不满足需求还可以很方便的在这些 ...
- Laravel核心代码学习--用户认证系统的实现细节
用户认证系统的实现细节 上一节我们介绍了Laravel Auth系统的基础知识,说了他的核心组件都有哪些构成,这一节我们会专注Laravel Auth系统的实现细节,主要关注Auth也就是AuthMa ...
最新文章
- android tools ignore,android 中tools:ignore=UselessParent这个属性的含义是什么?
- OpenCV YOLO DNN(yolo_object_detection)
- 解决Office 2016客户端如何同SharePoint Server2016安装在一起
- 微服务一定要使用Spring-Cloud吗?
- 【Qt】解决GDAL直接读取数据到QImage导致图像歪斜的问题
- 牛客16785 Cantor表
- crv仪表上的i是什么指示灯_汽车打不着火是怎么回事,仪表盘汽车发动机故障灯亮是什么情况故障指示灯图解大全集...
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- 别吹了!程序员自学Python,不如9岁小孩,网友:我不服.... ​
- 个人生活助手app_“3·15可信赖应用白名单”发布 360旗下多款APP获评甲级认证
- 计算机多功能教室管理制度,多媒体教室管理制度
- 软件测试基础学习笔记
- Crystal Reports 2008|Crystal Reports 2008破解版下载
- JavaScript零基础入门 11:JavaScript实现图片上传并预览
- Windows的文件目录管理策略
- matlab小波变换函数总结,matlab小波变换函数的总结与程序
- 游戏角色命名与游戏风格
- 用matlab作gmm参数估计,GMM模型的EM参数估计算法
- CodeForces 1009D Relatively Prime Graph 贪心+枚举
- I/O流(万流齐发、万流归宗) 本章目标: 掌握 讲 解:★★★★★ http://kuaibao.qq.com/s/20200527A0LR3000?refer=spider 1.I/O流概
热门文章
- ubuntu16.04安装mysql-workbench
- pytorch 构建神经网络模型总结
- java 缘起_GraalVM 助力 Java 进入函数即服务时代
- 深度学习(九)——花式卷积
- GitHub, Google Code, and other
- html批量转doc linux,HTML+CSS入门 Linux下如何批量将md文件转换为html文件
- java京东左侧固定层_京东首页右侧固定层
- pythondatetime小时_使用python从时间戳中提取小时
- mysql 代码怎么优化_Mysql性能优化
- 08.Eclipse下Ndk开发(使用fmod实现QQ变声功能)