Django(part48)--用户认证系统(django 用户认证)

网友投稿 445 2022-08-31


Django(part48)--用户认证系统(django 用户认证)

学习笔记,仅供参考

文章目录

​​用户认证系统​​

​​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

密码


email

邮箱

可选

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 modelsuser = models.User.objects.create_user(username='用户名', password='密码', email='邮箱',...)...user.save()

创建超级用户create_superuser

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

删除用户

from django.contrib.auth import modelstry: user = models.User.objects.get(username='用户名') user.is_active = False #使当前用户无效 user.save() print("删除普通用户成功!")except: print("删除普通用户失败")

修改密码

from django.contrib.auth import modelstry: 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 modelstry: user = models.User.objects.get(username='用户名') if user.check_password('输入的密码'): #成功返回True,失败返回False #Django会先对输入的密码进行加密 #然后再对保存在数据库中的加密后密码进行比较 return HttpResponse("密码正确") else: return HttpResponse("密码错误")except: return HttpResponse("没有此用户!")


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Django(part50)--Web请求认证(django request.user)
下一篇:Java高级语法学习之反射详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~