一、用户认证组件auth介绍

二、auth_user表添加用户信息

三、auth使用示例

四、auth封装的认证装饰器

一、用户认证组件auth介绍

解决的问题:

之前是把is_login=True放在session里来判断用户是否登录
之前的操作,在覆盖的时候有问题。
例如两个用户先后登录,第一个用户key-value比较多,第二个key-value少,覆盖后可能会保留有第一个的key-value

能做的事:1,验证用户名密码是否正确  2、判断用户是否已登录,用session保存用户登录状态

用户认证组件的前提:
功能:用session记录登录验证状态(不记录上次登录时间那些)
前提:不能用自己的用户表了。账号密码要放在Django自带的auth_user用户组件认证表。
不妨碍扩展其他字段。用这个表和其他表做一对一,一对多等

二、auth_user表添加用户信息

创建超级用户:python manage.py createsuperuser

创建普通用户:python manage.py createuser

三、auth使用示例

API
封装在auth模块中了:

--------------------------------------------------

from django.contrib import auth
def login(request):
  user=request.POST.get("user")
  pwd=request.POST.get("pwd")
    # 验证用户名密码是否正确
    # 如果验证通过返回user对象,不通过返回None
    # PS:可以自己来吗?from django.contrib.auth.models import User
    # 不得行,因为密码是加了密的,而且没必要干重复的事
  user=auth.authenticate(username=user,password=pwd)
  if user:
    # 如果验证通过,就注册登录信息
    auth.login(request, user)
    # 一旦注册session,把这个就变成了request.user
    # 在所有的视图函数和模板(模板里不用传都能用)都可以直接使用request.user
    # request.user表示当前登录对象 request.user==user
    # 没有登录是匿名对象,AnonymousUser,
      # request.user.is_anonymous或request.user.id==None
      #或request.user.user==''或request.user.is_authenticated 来判断用户是否登录

---------------------------------------------------------

注册用户

def reg(request):
  user=request.POST.get("user")
  pwd=request.POST.get("pwd")
  User.objects.create_user(username=user,password=pwd)    # 还有create_superuser方法,密码入库是加密的
  #改密码
  user = User.objects.get(username='')
  user.set_password(password='abc')
  user.save()

--------------------------------------------------------

总结:
from django.contrib import auth
1.验证登录:user=auth.authenticate(username=user,password=pwd)
2.注册登录:user=auth.login(request, user)
3.注销:auth.logout(request)

4.是否已经登录:request.user.is_authenticated
5.添加用户:User.objects.create_user(username=user,password=pwd)

PS:
request.user是一个全局变量。可以在视图中使用,在模板中不用传参可以直接用
补充:
如果是匿名用户对象:
request.user.is_anonymous==True
request.user.id==None
request.user.user==''

四、auth封装的认证装饰器

比如很多视图函数都要  “已经登录才能访问”的要求
可以用Django自带的装饰器解决 @login_required
不认证跳转到LOGIN_URL="/login/"是自己在settings.py里配的
但实际跳转是到:127.0.0.1:8000/login/?next=/order/
所以在视图函数中:
登录成功应该重定向到return redirect(request.GET.get("next","/index/"))

@login_required
def order(request):
  # if not request.user.is_authenticated:
    # return redirect("/login/")
  return render(request,"order.html")

Django--用户认证组件auth(登录用-依赖session,其他用)的更多相关文章

  1. Django之路——11 Django用户认证组件 auth

    用户认证 auth模块 1 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenti ...

  2. web框架开发-Django用户认证组件

    可以用认证组件做什么 针对session的缺陷, 跟新数据时,不跟新key键, 用户认证组件是删除后再重建 用户认证组件很多功能可以直接使用 利用用户认证表(auth_user,通过Django自己创 ...

  3. 10.Django用户认证组件

    用户认证组件: 功能:用session记录登录验证状态: 前提:用户表,django自带的auth_user 创建超级用户:python manage.py createsuperuser       ...

  4. Django用户认证组件

    用户认证 主要分两部分: 1.auth模块   from django.contrib import auth 2.User对象 from django.contrib.auth.models imp ...

  5. django——用户认证组件

    用户认证 auth模块 1 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenti ...

  6. Django 学习之用户认证组件auth与User对象

    一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个. 1 .authenticate() ...

  7. Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API

    用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...

  8. django的用户认证组件

    DataSource:https://www.cnblogs.com/yuanchenqi/articles/9064397.html 代码总结: 用户认证组件: 功能:用session记录登录验证状 ...

  9. 06 django的用户认证组件

    1.用户认证组件 用户认证组件: 功能:用session记录登录验证状态 前提:用户表:django自带的auth_user 创建超级用户: python3 manage.py createsuper ...

随机推荐

  1. 关于 IdentityServer4 中的 Jwt Token 与 Reference Token

    OpenID Connect(Core),OAuth 2.0(RFC 6749),JSON Web Token (JWT)(RFC 7519) 之间有着密不可分联系,对比了不同语言的实现,还是觉得 I ...

  2. Python爬虫入门教程 3-100 美空网数据爬取

    美空网数据----简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...

  3. VueJs 源码分析 ---(二)实力化生命周期,以及解析模版和监听数据变化

    Vue 源码第二步 当前 Vue 的版本 V2.2.2 生命周期 相关介绍 我们可以从 setp1 中 去看到那张 vue 的生命周期图中看到,vue 的生命周期钩子. 具体的钩子时干什么的? 以及在 ...

  4. dotnet core 开发无缝兼容Http和Websocket协议的接口服务

    在应用接口开发中往往要针对不同协义开发相应的代理服务,但对于Websocket和http这两种协议来说就有些不同,从实现上来看Websocket可以说是Http的升级子协议, 两者在协议处理上基本一致 ...

  5. Too many authentication failures for xxxx_username

    解释 这个报错通常是因为多个ssh key 验证,key太多了导致服务器拒绝接受认证请求. 可以通过 -v 参数,输出详细的过程.你会发现你提供的认证key,服务器拒绝链接,并提示异常:"T ...

  6. 安装wamp环境 最新完整版

    Apache 下载地址:https://www.apachehaus.com/cgi-bin/download.plx 下载后 解压目录 放到C:/Program Files下面目录重命名为Apach ...

  7. MySQL8.0.12 安装及配置、读写分离,主从复制

    一.安装 1.从网上下载MySQL8.0.12版本,下载地址:https://dev.mysql.com/downloads/mysql/ 2. 下载完成后解压 我解压的路径是:D:\Java\mys ...

  8. .Net语言 APP开发平台——Smobiler学习日志:在应用中添加WeiXin组件

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 控件说明 WeiXin组件. 效果演示 1. 分享好友 2. 分享朋友圈 图1 图2 ...

  9. 第32章 事件 - Identity Server 4 中文文档(v1.0.0)

    日志记录是更低级别的"printf"样式 - 事件代表有关IdentityServer中某些操作的更高级别信息.事件是结构化数据,包括事件ID,成功/失败信息,类别和详细信息.这使 ...

  10. VS 使用vs2017自带的诊断工具(Diagnostic Tools)诊断程序的内存问题

    前言 一般来说.NET程序员是不用担心内存分配释放问题的,因为有垃圾收集器(GC)会自动帮你处理.但是GC只能收集那些不再使用的内存(根据对象是否被其它活动的对象所引用)来确定.所以如果代码编写不当的 ...