Django auth认证组件 简介

'''
Django auth认证组件提供了用户表的构建方式,认证接口,会话登录与注销接口. 中间件将会话登录用户保存到request对象中,这样不用从会话中获取用户id,再通过model获取用户对象.
对于认证接口要提供用户名和密码传入auth.authenticate(username,password),认证成功, 就可以得到认证用户对象.
只需要根据认证结果是否有对象,来判定认证结果,来进行后面的操作.返回的用户对象传入auth.login(request,user)接口,调用接口,可以会将用户登录信息记录到session中.
'''

auth组件常用api

1, auth.authenticate(username=login_name,password=pwd)
# 认证成功返回User对象,失败返回None 2, auth.login(request, user)
# 注意request是必须的,是请求对象,user是通过authenticate认证后得到的。作用会话登录,将登录信息保存到会话中。如果当前会话已经产生会flush。 3, request.user
# 这个就是一个django.utils.functional.SimpleLazyObject对象,如果authenticate认证成功,返回的对象是model-user对象,也就是auth_user表对象;将该对象进过auth.login后,那么request.user就是相应的该用户;不然就是一个anonymous用户。通过request.user可以判定是否有用户登录。
# 重要:request.user是一个全局变量,可以在视图和模版中使用。 4, auth.logout(request)
# 登出当前session中登录的用户,如果没有用户登录,也不会报错。登出后request.user就是annoymouse用户了。会清空会话。 5, reques.user.username
# 可以判定是否有用户登录。不能使用request.user判定是否有用户登录,因为没有用户登录,这个也会返回一个annoymouse用户,只有访问其属性才会返回一些False值。
#所以通过request.user.* 的属性才能判定是否有用户登录的状态。 6, request.user.is_authenticated
# 判定是否登录返回True或False. 7, django.contrib.auth.get_user_model()
# 可以获取到当前auth组件使用的认证model类

注意区别两个API判定 ‘是否认证’ 与 ‘是否认证成功的区别’

# auth.authenticate() 与 request.user.is_authenticated 的使用场景和功能区别:

'''
前者 是 认证 ,其返回的结果是User_obj 或者 None,目的是判定认证是否成功,仅仅使用在登录认证view视图函数中。 后者 是 是否有用户登录, 其返回结果是True 或者False。目的是校验用户是否登录了,用于除了登录认证view与不校验用户登录的view。即需要校验用户登录状况才有后续操作的情景中。这个的前提是auth.authenticate和auth.login 两个登录过程操作。只有两者操作了,才有登录的判定。
'''

Auth组件默认auth_user表常用操作

# 1、校验用户账号及密码,校验成功返回user对象
from django.contrib.auth import authenticate
user = authenticate(username=usr, password=pwd) # 2、注册用户到request对象中,注册成功可以request.user访问当前登录用户(会形成session记录)
from django.contrib.auth import login
login(request, user) # 注册authenticate成功(当前登录)的用户 # 3、注销当前注册的user (用户注销)
from django.contrib.auth import logout
logout(request) # 4、校验用户登录状态
# 视图函数中使用
if request.user.is_authenticated(): pass
# 模板语言中使用
{% if request.user.is_authenticated %}
{% else %}
{% endif %} # 5、校验登录状态的装饰器
from django.contrib.auth.decorators import login_required
@login_required(login_url='/user_login/')
def user_home(request):
return render(request, 'user.html', locals())

auth组件的更多相关文章

  1. Auth组件,Forms组件

    一.Auth组件默认auth_user表常用操作 #1.配置settings,使django与数据库连接 DATABASES = { 'default': { 'ENGINE': 'django.db ...

  2. Laravel 5.3 使用内置的 Auth 组件实现多用户认证功能

    https://blog.csdn.net/kevinbai_cn/article/details/54341779 概述 在开发中,我们经常会遇到多种类型的用户的认证问题,比如后台的管理员和前台的普 ...

  3. django第13天(auth组件,forms组件,中间件,csrf)

    django第13天(auth组件,forms组件) auth组件 -auth组件 -auth是什么? -django内置的用户认证系统,可以快速的实现,登录,注销,修改密码.... -怎么用? -( ...

  4. Django day16 Auth组件

    一:Auth组件 -django内置的用户认证系统,可以快速的实现,登录,注销,修改密码... -怎么用? (1)先创建超级用户: -python3 manage.py createsuperuser ...

  5. Django之组件--auth组件

    目录 Auth模块是什么 auth模块常用方法 扩展默认的auth_user表 1 Django自带的用户认证模块,可以快速的实现登录,注销,修改密码... 2 扩展auth表,需要继承Abstrac ...

  6. Django之auth组件

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

  7. Django auth组件拓展 关联外部信息---------------------------- Profile 模式

    https://docs.djangoproject.com/en/2.1/topics/auth/customizing/ 官方文档. 网上的get_profile 方法不好用太假了 可能我没用明白 ...

  8. django----csrf跨站请求伪造 auth组件 settings源码 importlib模块

    目录 importlib模块 csrf跨站请求伪造 form表单发送 ajax发送 csrf装饰器 auth模块 如何创建超级用户(root) 创建用户 校验用户名和密码是否正确 保存用户登录状态 判 ...

  9. Django Auth组件->扩展用户

    Auth用户 1.声明用户表 djangauth/settings.py..............................AUTH_USER_MODEL = 'app01.UserInfo' ...

随机推荐

  1. Go语言里的slice

    1.切片是基于数组做的一层封装,灵活能够自动扩容. 2.切片的初始化方法 ①直接创建 ②基于已有的数组或切片 ③使用make来创建一个切片 第一个5是切片的大小 第二个5是切片的容量 3.基本操作 ① ...

  2. [BJOI2019]排兵布阵——分组背包

    题目链接: [BJOI2019]排兵布阵 对于每座堡垒,将$s$个对手排序,显然如果安排的兵力能打败第$i$个对手就一定能打败前$i-1$个. 那么对于第$i$座城堡,可以看做有$s+1$个物品(可以 ...

  3. BZOJ 1855 股票交易 (算竞进阶习题)

    单调队列优化dp dp真的是难..不看题解完全不知道状态转移方程QAQ 推出方程后发现是关于j,k独立的多项式,所以可以单调队列优化.. #include <bits/stdc++.h> ...

  4. CC++语法::数组名退化(array decaying)

    参考: CSDN::C/C++中数组名退化为指针的情况 stackoverflow::What is array decaying? 起因 笔者在写memset的时候总想偷一点懒(因为我们一般都是为了 ...

  5. 树莓派wiringPi,BCM,BOARD编码对应管脚

    wiringPi,BCM,BOARD编码 由于上课需要, 嵌入式学习从树莓派开始 树莓派中执行: $> gpio readall 即可得到关于树莓派管脚的各种信息 上面的图可能不是特别清楚, 可 ...

  6. CodeForces - 314C Sereja and Subsequences (树状数组+dp)

    Sereja has a sequence that consists of n positive integers, a1, a2, ..., an. First Sereja took a pie ...

  7. Linux 日志文件管理——限制大小

    设计思路: 1 用一个INI配置文件管理日志目录,日志文件限制的大小,特殊的日志名,特殊日志的大小限制. 2 读取INI文件中的所有信息:每一个日志目录对应的大小限制,每一个特殊日志对应的大小限制.如 ...

  8. SQL server存储过程,触发器,游标相关实例

    use MySchool go alter proc P_stu as select AVG(StudentResult)as 平均分 from Result select * from Result ...

  9. HTTP高并发调优小记

    tomcat服务层 1.修改server.xml <Connector port="8088" protocol="HTTP/1.1" maxThread ...

  10. javascript 事件冒泡和事件代理

    事件冒泡 简单的讲,当子元素的事件处理函数被触发(如onclick),该事件会从事件源(当前子元素)逐级向上层元素传递,触发祖先元素的 onclik 事件,一直到最外层 html 根元素. 这可能会带 ...