########django-auth认证模块########

auth模块:它是django自带的用户认证模块,帮我们解决了登陆,注册,注销,修改密码
等等一系列的操作,封装成一个个方法,方便我们使用,用户数据放在auth_user
表中,学习这个模块就是知道它下面的方法是怎么用。 authenticate(request=None, **credentials)
# 这个方法帮我们验证该用户是否存在,我们要传的参数第一个就是request,其次就是name,password等等,
# 如果存在的话,将会返回一个该用户对象,存在则会返回None,所以我们可以通过判断它的返回值,进行下步操作
user = authenticate(request,username='zhuyu',password='')
if user:
return HttpResponse('验证成功')
return HttpResponse('验证失败')
注意:这里的username,password就是User这个表的字段名,所以必须这样写 login(request, user, backend=None)
# 需要注意的是这里的user,是一个校验成功的User对象
# 这个方法表示登陆成功,方法内部其实也执行了session相关操作,记录登陆状态
user = authenticate(request,username='zhuyu',password='')
if user:
auth.login(request,user)
return HttpResponse('登陆成功')
return HttpResponse('登陆失败') logout(request)
# 既然有登陆,那就有注销吧
auth.logout(request)
return HttpResponse('注销成功') is_authenticate()
# 这是request.user方法,用来判断用户是否登陆了没有
# 那为什么要用is_authenticate()去判断,而不是用if request.user
# 解释下,在用户没有登陆request.user是有值的,它是一个AnonymousUser对象
# 所以通过if request.user去去判断是根本不行的,但是取这个对象的username属性判断是可以的
# 不过我们还是用django给我们方法去判断最好,is_authenticate()的返回值是布尔类型 思考:通过web服务端来的request,还没走到中间件之前,你认为他会有user这个属性嘛? 照常来说web服务端(也就是wsgiref那里)只是帮你处理下格式,还有数据,它肯定是不知道这个请求是不是登陆的,
所以啊,user这个属性肯定是在中间件那层进行逻辑判断,加上去的。
那么能想到执行auth.login(request,user)它做了些什么?
下面也伪代码(这里的user校验成功):
print(request.user)
auth.login(request, user)
print(request.user)
打印结果为: AnonymousUser
zhuyu 说明它不单单只是只是设置了session,还把user这个对象赋值给了request.user(大概这样吧,具体肯定复杂吧) login_requierd()
# 直接讲它就是一个装饰器,实现必须登陆了才能访问该网站
# 先导入该方法,再直接在那个视图函数上面加上就行了
from django.contrib.auth.decorators import login_required
@login_required
def buy(request):
return HttpResponse('购买页面') # 这里也可以指定跳转到那个页面(url)
方式一:
@login_required(login_url='/login/') 方式二:
@login_required 直接调用,不过要在settings那里配置下
settings文件中:
LOGIN_URL = '/login/' 对了对了,这个auth也是要导入才可以用到
from django.contrib import auth create_user()和create_superuser()
# 这个应该早点写,必须是要先有用户才能注册(我的锅)
# 创建一个新的对象,就是执行create类似操作对吧
from django.contrib.auth.models import User
User.objects.create_user(username='张昊',password='zh123456')
User.objects.create_superuser(username='伍洋',password='wy123456') # 第一句就是创建一个普通用户
# 第二句就是创建一个超级用户 check_password()
# 验证密码是否正确
# 应用场景就是修改密码的时候,需要用户先输入原密码
# 它的返回值就是布尔类型
ret = request.user.check_password('密码') set_password()
# 验证输入的密码是和原密码匹配的话,
# 那就是开始修改密码了
request.user.set_password('新密码')
request.user.save()
注意:1、这里必须要save一下
2、这里万万不可以用update方法,因为数据库的密码是加密后的,虽然你可以保存到数据库,
但是呢?你从数据库取出来的话,密码会显示不正确。
3、还有就是创建用户,和超级用户,必须用create_user,和create_superuser,原因和上面一样 request.user其他属性
User对象属性:username, password
is_staff : 用户是否拥有网站的管理权限.
is_active : 是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录。 疑问:单单一个User表肯定是不能满足我们的需求的,所以需要为它关联表
方式一:
在models文件中,导入auth中的User表就好了,关联方法和之前一样,不多说 方式二:
就是继承User类(表),
1、首先肯定是要导入 from django.contrib.auth.models import User,AbstractUser
2、去看User表,就应该知道它也没有写什么,也是继承AbstractUser,所以我们直接继承AbstractUser就行
3、继承完毕后,需要在settings文件指定原来User表,现在使用你所建立的 models文件:
class Userinfo(AbstractUser):
phone = models.CharField(max_length=11, null=True, unique=True) 在settings文件中:
AUTH_USER_MODEL = "app名.UserInfo" 好了,今天到这里!!

django-auth认证模块的更多相关文章

  1. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  2. csrf跨站请求伪造、csrf相关装饰器、auth认证模块、基于django中间件设计项目功能

    目录 csrf跨站请求网站 什么是csrf跨站请求网站 经典例子-钓鱼网站 模拟 如何避免这种现象(预防) 如何在django中解决这个问题 form表单 ajax csrf相关装饰器 FBV CBV ...

  3. auth 认证模块

    . auth认证模块: http://www.cnblogs.com/liwenzhou/p/9030211.html auth模块的知识点: . 创建超级用户 python manage.py cr ...

  4. Django之Auth认证模块

    一.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登陆,用户认证,注销修改密码等功能 ...

  5. Django--csrf跨站请求伪造、Auth认证模块

    form表单中使用跨站请求伪造 { % csrf_token % } 会动态生成一个input框,内部的value是随机刷新的 如果不想校验csrf from django.views.decorat ...

  6. Django用户认证模块中继承AbstractUser与AbstractBaseUser重写User表的区别

    AbstractUser和AbstractBaseUser看起来十分相似,如果你不熟悉djiango的auth重写User,那你很容易弄错,导致一堆bug. 我们查看AbstractUser的源码得知 ...

  7. Django auth认证

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  8. Django auth认证系统

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  9. Auth认证模块

    1.auth简介 auth是什么? auth是django内置的用户认证系统,可以快速的实现:登录,注销,修改密码........ 2.autho的使用 1)先创建超级用户 python3 manag ...

  10. Django进阶-auth集成认证模块

    auth认证模块是Django内置集成的一个用户认证模块. auth认证模块方法 方法 释义 auth.authenticate() 认证校验 auth.login(request,user) 封装认 ...

随机推荐

  1. MySQL中在原表中做数据去重(按日期去重,保留id最小的记录)

    表名称 code600300 delete from code600300 where id not in (select minid from (select min(id) as minid fr ...

  2. git的commit规范及强制校验

      1.背景 在多人协作项目中,如果代码风格统一.代码提交信息的说明准确,那么在后期协作以及Bug处理时会更加方便. 先来介绍本人公司采用的commit规范 Commit message格式 < ...

  3. OpenStack各组件详解和通信流程

    一.openstack由来 openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成.后来以apache许可证授权,旨在为公共及私有云平台建设.open ...

  4. vue——指令系统

    指令系统,可以联想咱们的cmd命令行工具,只要我输入一条正确的指令,系统就开始干活了. 在vue中,指令系统,设置一些命令之后,来操作我们的数据属性,并展示到我们的DOM上. 在vue中提供了一套为数 ...

  5. vuex深入浅出

    本文主要记录使用vuex的使用场景.重要组成部分和学习心得. 1.说在前面 学习vue有两周的时间了,目前已经对vue的基础使用比较熟悉了.但是一直对vuex的使用耿耿于怀,这么说是因为总是不太理解, ...

  6. mysql 常用操作语句

    1 根据表中的其中一个字段的值来修改同行某字段的值 UPDATE  radar a INNER JOIN radar b ON a.id=b.id SET a.letter=LEFT(b.filena ...

  7. python 初识

    一.Python介绍 Python简介 Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...

  8. matlab练习程序(毛玻璃模糊)

    算是一种特效模糊方式吧,算法原理就是用邻域随机像素代替当前所处理的像素就可以了. 效果如下图所示: 原图: 处理后结果: matlab代码如下: clear all; close all;clc; i ...

  9. solidity语言4

    引用类型(Reference Types) memory 不支持持久保存 storage 保留为变量 复杂类型如arrays和structs,有附加信息,'data location',提示存储在'm ...

  10. MySQL中AddDate函数的疑惑

    无论使用哪一种RDBMS,都需要使用到其中的一些日期转换函数,在使用MySQL的AddDate函数时,遇到了点小问题,稍作记录. root@localhost:mysql3376.sock [(non ...