前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DJANGO的用户认证系统

DJANGO的用户认证系统

作者头像
KEVINGUO_CN
发布2020-03-17 18:15:02
1.1K0
发布2020-03-17 18:15:02
举报
文章被收录于专栏:全栈全栈全栈全栈

Django自带的用户认证系统,为开发者提供了许多在用户登陆登出方面的快捷开发命令。这篇博文为初学者讲解如何使用django的用户认证系统。 Django版本2.X

1.User模型

User模型是抽象的用户,对应总的用户表,可以用来配置页面的访问权限,注册用户的配置文件等功能。Djang中对应的User类只有一个,“超级管理员”(superuser)或“普通用户”(staff)是用户类的属性对象,而不是不同的类。 默认的用户的主要属性是: username,password,email,first_name,last_name等,具体的属性请参考官方文档。

2.创建用户

创建一个新的用户对象,实际上是实例化处一个User类的对象。通常你可以: 直接创建

代码语言:javascript
复制
from django.contrib.auth.models import User
user = User()
user.username=kevinguo
user.first_name=kevin
user.last_name=guo

用户的密码不能以明文的方式存储在数据表中,所以应当对密码进行加密运算set_password方法是对明文密码进行加密。

代码语言:javascript
复制
user.set_password("new password")
user.save

使用create_user方法 显然,上述方法不够简便,django为我们提供了更加方便的方法直接创建一个新的用户

代码语言:javascript
复制
from django.contrib.auth.models import User
new_user = User.objects.create_user('kevinguo','kevinguocn@kevinguo.cn','mypassword')

通过上述代码,django相当于执行了我们第一步中的包含save操作的所有内容,这个新的用户已经被保存在用户表中了,如果我们想额外增加新的字段,可以通过如下类似的操作。

代码语言:javascript
复制
user.first_name="kevin"
user.last_name="guo"
user.save()

3.创建超级管理员用户

为安全起见,超级管理员用户无法通过如上方法创建,django为我们提供的manage.py 工具包中的方法可以创建一个超级管理员用户

代码语言:javascript
复制
python manage.py createsuperuser --username=kevinguo --email=kevinguo@kevinguo.cn

之后,你会被提示输入两次密码,完成创建。如果你带上参数,同时也被要求输入这些。

4更改密码

在shell中更改密码

代码语言:javascript
复制
python manage.py changepassword *username*

在代码处修改,使用set_password()

代码语言:javascript
复制
user = User.objects.get(username="kevinguo")
user.set_password('new password')
user.save()

特别注意的是,如果用户密码更改后,该用户的所有登陆状态均失效。

5.用户验证authenticate

使用authenticate()来验证用户。它使用username和password作为参数进行验证,对每个身份验证后端(setting.py 中的 authentication backend)进行一一检查,如果有一个认证后端返回一个user对象(class:django.contrib.auth.model User),则停止向下检查。如果后端引发PermissionDenied错误,将返回None.下面在代码中进行举例说明

代码语言:javascript
复制
from django.contrib.auth import authenticate
user = authenticate(username="kevinguo",password="mypassword")
if user:
    pass
else:
    pass

6.用户的登陆

如何将上述已经得到验证的用户添加到当前的会话(session)中?django,使用login()函数来完成。 下面的例子综合了上方的authenticate方法和login方法,完整的展示了一个简单的用户认证登陆过程。简便期间,使用视图函数处理。

代码语言:javascript
复制
from django.contrib.auth import authenticate,login
def login_view(request):
    username = request.POST['username']
    password = request.POST['password']
user = authenticate(username=username,password=password)
if user:
    login(request,user)
    #返回一个登陆成功的页面
else:
    #返回一个错误页面

7.用户的登出logout()

如果已经通过login登录的用户想要登出,可以在视图中使用django.contrib.auth.logout(),该函数不会返回任何值。

代码语言:javascript
复制
from django.contrib.auth import logout
def logout_view(request):
    logout(request)
 #返回一个登出的成功页面

你可以根据自己的需求在以上基础上添加更为复杂的业务逻辑。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.User模型
  • 2.创建用户
  • 3.创建超级管理员用户
  • 4更改密码
  • 5.用户验证authenticate
  • 6.用户的登陆
  • 7.用户的登出logout()
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档