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

  1:authenticate()
    提供了用户认证,即验证用户名以及密码是否正确,一般需要username password两个关键字参数
    如果认证信息有效,会返回一个 User 对象。authenticate()会在User 对象上设置一个属性标识那种认证后端认证了该用户,且该信息在后面的登录过程中是需要的。当我们试图登陆一个从数据库中直接取出来不经过authenticate()的User对象会报错的!
    user = authenticate(username='someone',password='somepassword')

  2:login(HttpRequest,user)

    该函数接受一个HttpRequest对象,以及一个认证了的User对象
    此函数使用django的session框架给某个已认证的用户附加上session id等信息。    

from django.contrib.auth import authenticate, login

def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
# Redirect to a success page.
...
else:
# Return an 'invalid login' error message.
...

  3  logout(request) 注销用户

from django.contrib.auth import logout

def logout_view(request):
logout(request)

该函数接受一个HttpRequest对象,无返回值。当调用该函数时,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错

  4 user对象的 is_authenticated()

  要求:

    1 用户登陆后才能访问某些页面,
    2 如果用户没有登录就访问该页面的话直接跳到登录页面
    3 用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访问的地址

    django已经为我们设计好了一个用于此种情况的装饰器:login_requierd()

    在settings中,添加如下内容

# 判断用户如果没有登录,重定向到登录页面
LOGIN_URL='/index/'

   

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
...

若用户没有登录,则会跳转到django默认的 登录URL '/index/ ' (这个值可以在settings文件中通过LOGIN_URL进行修改)。并传递  当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。

示例:

# 登录
def index(request):
err_msg = ""
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
# 使用auth模块进行验证
user = authenticate(username=username,password=password) # 使用auth模块进行登录
if user is not None:
login(request,user)
return redirect(reverse('userlist'))
else:
err_msg = "用户名或密码不正确"
return render(request,'index.html',{'err_msg':err_msg}) # 退出
def log_out(request):
logout(request)
return redirect(reverse('index'))

====================================

二:User对象    

  1:创建用户

  使用 create_user 辅助函数创建用户: 

from django.contrib.auth.models import User
user = User.objects.create_user(username='',password='',email='')

  2:set_password(passwd)

  这个方法是用来更改密码的,使用步骤:  

user=User.objects.get(username='')
user.set_password(passeord='')
user.save

  3:check_password(passwd)

    用户需要修改密码的时候 首先要让他输入原来的密码 ,如果给定的字符串通过了密码检查,返回 True

示例:  

# 添加用户
def admin_add(request):
......
if request.method == "POST":
# 在auth_user表中添加数据
username = request.POST.get('username')
password = request.POST.get('password')
add_admin = User.objects.create_user(username=username, password=password)
add_admin.save()
return redirect(rev_url(request,'admin_list'))
else:
error_msg = "用户名已存在"
return render(request, "change.html", {'form_obj': admin_obj,
"error_msg":error_msg})
# 修改密码
@login_required
def set_pwd(request):
user = request.user
state = ""
if request.method == 'POST':
old_password = request.POST.get('old_password', '')
new_password = request.POST.get('new_password', '')
repeat_password = request.POST.get('repeat_password', '') if user.check_password(old_password):
if not new_password:
state = '新密码不能为空'
elif new_password != repeat_password:
state = '两次密码不一致'
else:
user.set_password(new_password)
user.save()
# 注销,跳转到index页面
logout(request)
return redirect("/index/")
else:
state = '密码不正确'
content = {
'user': user,
'state': state,
}
return render(request, 'change_pwd.html', content)

Django Auth模块及User对象方法的更多相关文章

  1. Django (auth模块、User对象、用户认证、线上-用户认证)

    一.auth模块 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般需要usern ...

  2. day03 Django目录结构与reques对象方法

    day03 Django目录结构与reques对象方法 今日内容概要 django主要目录结构 创建app注意事项(重点) djago小白必会三板斧 静态文件配置(登录功能) requeste对象方法 ...

  3. Django 自带认证功能auth模块和User对象的基本操作

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

  4. python3开发进阶-Django框架的自带认证功能auth模块和User对象的基本操作

    阅读目录 auth模块 User对象 认证进阶 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其 ...

  5. django ---Auth模块

    Auth模块 本文目录 1 Auth模块是什么 2 auth模块常用方法 3 扩展默认的auth_user表 回到目录 1 Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开 ...

  6. Django-中间件-csrf扩展请求伪造拦截中间件-Django Auth模块使用-效仿 django 中间件配置实现功能插拔式效果-09

    目录 昨日补充:将自己写的 login_auth 装饰装在 CBV 上 django 中间件 django 请求生命周期 ***** 默认中间件及其大概方法组成 中间件的执行顺序 自定义中间件探究不同 ...

  7. Django—auth模块

    auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的 ...

  8. Django——Auth模块(用户认证模块)

    1.Auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象. 而有了auth模块之后就可以很轻松的去验证用 ...

  9. Python - Django - auth 模块

    生成数据库 查看 auth_user 数据库 给 auth_user 表创建一个超级用户 邮箱地址可以不写 再看一下 auth_user 表 密码被加密了 login.html: <!DOCTY ...

随机推荐

  1. 3.java并发包

    1.java并发包介绍 JDK5.0 以后的版本都引入了高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程并发编程的,充分利用了现代多处理器 和多核心系统的功 ...

  2. Docker容器入门篇

    第1章 Docker简介 1.1 Docker容器介绍 Docker官网:https://www.docker.com/ 什么是docker? Docker 最初是 dotCloud 公司创始人 So ...

  3. zencart设置默认货币三种方法

    zencart设置默认货币为USD 方法一:mysql UPDATE configuration SET configuration_value = 'USD' WHERE configuration ...

  4. golang 系列学习(-) 数据类型

    数据类型的出现 在的编程语言中,数据类型用于声明函数和变量,数据类型的出现是为了要把数据分成数据所需要内存大小的不同数据,编程时需要什么样的内存就申请什么样的内存.就可以充分的利用内存,更好的霸控程序 ...

  5. MySQL Audit日志审计

    一.简介 数据库审计能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库受到的风险行为进行告警,对攻击行为进行阻断,它通过对用户访问数据库行为的记录.分析和汇报,用来帮助用 ...

  6. MQTT 入门介绍——菜鸟教程

    一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级& ...

  7. pd.dataframe和series以及np.narray的维度升降

    1.第一步读入泰坦尼克号数据集 import pandas as pd data = pd.read_csv(r".\Narrativedata.csv" ,index_col=0 ...

  8. python---硬件序列号

    安装wmi : pip install wmi -i https://pypi.douban.com/simple 还要安装  pip install pywin32 import wmi c = w ...

  9. HDU 6045 - Is Derek lying | 2017 Multi-University Training Contest 2

    /* HDU 6045 - Is Derek lying [ 分析 ] 题意: 有N个问题, 每个问题有A,B,C三种答案,答对加一分,答错不加分 给出甲乙两人的答案,给出两人的分数先x, y,问分数 ...

  10. 【WinForm-TreeView】实现Win7 Areo效果

    效果图: 新建一个继承自TreeView的控件类,代码如下: using System; using System.Windows.Forms; using System.Drawing; using ...