浅谈django中的认证与登录


Posted in Python onOctober 31, 2016

认证登录

django.contrib.auth中提供了许多方法,这里主要介绍其中的三个:

1  authenticate(**credentials)    提供了用户认证,即验证用户名以及密码是否正确

一般需要username  password两个关键字参数

如果认证信息有效,会返回一个  User  对象。authenticate()会在User 对象上设置一个属性标识那种认证后端认证了该用户,且该信息在后面的登录过程中是需要的。当我们试图登陆一个从数据库中直接取出来不经过authenticate()的User对象会报错的!!

user = authentica(username='someone',password='somepassword')

2  login(HttpRequest, user, backend=None)

该函数接受一个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)
  # Redirect to a success page.

该函数接受一个HttpRequest对象,无返回值。

当调用该函数时,当前请求的session信息会全部清除

该用户即使没有登录,使用该函数也不会报错
 
只允许登录的用户访问

如果希望:

1  用户登陆后才能访问某些页面,

2  如果用户没有登录就访问该页面的话直接跳到登录页面

3  用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访问的地址

我们有几个方法来实现:

1  糙活

检测request.user.is_authenticated()

from django.conf import settings
from django.shortcuts import redirect

def my_view(request):
  if not request.user.is_authenticated():
    return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))

2  django中的login_required函数

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

from django.contrib.auth.decorators import login_required 
   
@login_required 
def my_view(request): 
  ...

在运行my_view函数前需要进行登录验证。

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

可以使用  login_url  参数来配置 登录url 。

可以使用redirect_field_name参数配置 当前访问url的绝对路径 。

如果要使用django的默认登陆界面,则可以通过在urls.py中如此配置,这样的话,如果未登录,程序会默认跳转到

“templates\registration\login.html”这个模板。

#urls.py
...
(r'^accounts/login/$', 'django.contrib.auth.views.login'),

2  如果用户登陆了,则会进入正常的页面

以上就是小编为大家带来的浅谈django中的认证与登录全部内容了,希望大家多多支持三水点靠木~

Python 相关文章推荐
python 生成不重复的随机数的代码
May 15 Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 Python
Python 基础教程之包和类的用法
Feb 23 Python
用Python实现随机森林算法的示例
Aug 24 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
简单了解python代码优化小技巧
Jul 08 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
用Python画小女孩放风筝的示例
Nov 23 Python
pytorch构建多模型实例
Jan 15 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
python 下划线的不同用法
Oct 24 Python
python 把数据 json格式输出的实例代码
Oct 31 #Python
python中json格式数据输出的简单实现方法
Oct 31 #Python
python并发编程之多进程、多线程、异步和协程详解
Oct 28 #Python
微信 用脚本查看是否被微信好友删除
Oct 28 #Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 #Python
Python中断言Assertion的一些改进方案
Oct 27 #Python
利用Python实现颜色色值转换的小工具
Oct 27 #Python
You might like
第五节 克隆 [5]
2006/10/09 PHP
php模板函数 正则实现代码
2012/10/15 PHP
PHP修改session_id示例代码
2014/01/08 PHP
js实时监听文本框状态的方法
2011/04/26 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
使用python编写监听端
2018/04/12 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
使用python计算三角形的斜边例子
2020/04/15 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
硕士研究生求职自荐信范文
2014/03/11 职场文书
绩效工资实施方案
2014/03/15 职场文书
公民授权委托书范本
2014/09/17 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书