########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. openssl命令使用

    openssl openssl是个密码工具集,提供多端接口调用方式 组成: 1. 代码库 libcryto ,libssl(ssl/tls) 2. 工具集 openssl 对称加密 对称加密主要是用a ...

  2. 又到圣诞节,让你的网页下起雪(js特效)

    又到圣诞节,让你的网页下起雪(js特效) 在4年多前,我写过一个特效,就是让你的网页下起雨,它的效果就是在你打开的网站,雨点下满你的屏幕,恩,大概效果如下图: 当然这个效果还有一些附带项,比如风速.风 ...

  3. Highcharts error #14: www.highcharts.com/errors/14

    错误原因:数据类型错误,需要的是Number类型,传入的却是String 以为为官网说明: Highcharts Error #14 String value sent to series.data, ...

  4. 【Linux】IPC-消息队列

    问题 消息队列id 和键值KEY区别? 首先要注意一个概念:IPC结构都是内核的结构.也就是说IPC结构由内核维护,对于每个进程都是公共的,不属于某个特定进程.只有这样,IPC结构才能支持它们&quo ...

  5. Swing入门学习

    工作以来,一直都是基于java web方向的开发,并没有java方向GUI相关的开发经验,不过好在之前用过winform开发.有了基础的套路,想来搞一下Swing也没有什么压力!到网上搜了一下相关的学 ...

  6. SQLServer存储过程 实例,很多语法可以以后参考

    SQL代码 alter PROCEDURE sp_addnewdtgtype ( ), @dtgdllcontent image, ) ) AS BEGIN ); declare @v_count i ...

  7. 将CSV文件中的数据导入到SQL Server 数据库中

    导入数据时,需要注意 CSV 文件中的数据是否包含逗号以及双引号,存在时,导入会失败 选择数据库 -> 右键 -> 任务 -> 导入数据 ,然后根据弹出的导入导出向导(如下图)中的提 ...

  8. 两种计算Java对象大小的方法

    之前想研究一下unsafe类,碰巧在网上看到了这篇文章,觉得写得很好,就转载过来.原文出处是: http://blog.csdn.net/iter_zc/article/details/4182271 ...

  9. MySQL的基础(优化)3

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  10. vue+node+mongoose踩过的坑

    1.当你在cmd中输入npm run dev的时候,出现这种错误 很有可能是目前的端口被占用了,可以把所有可能用到这个端口号的应用关闭或者你直接改一个新的端口号 修改端口的方法:新打开一个cmd,然后 ...