浅谈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 返回汉字的汉语拼音
Feb 27 Python
Python getopt模块处理命令行选项实例
May 13 Python
Python实现从百度API获取天气的方法
Mar 11 Python
Python松散正则表达式用法分析
Apr 29 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
python读文件的步骤
Oct 08 Python
Python中Subprocess的不同函数解析
Dec 10 Python
简单了解Python读取大文件代码实例
Dec 18 Python
Python通过Pillow实现图片对比
Apr 29 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
python boto和boto3操作bucket的示例
Oct 30 Python
Python anaconda安装库命令详解
Oct 16 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
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
Python实现二分查找与bisect模块详解
2017/01/13 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
留学自荐信
2013/10/10 职场文书
就业协议书的作用
2014/04/11 职场文书
物业管理专业求职信
2014/06/11 职场文书
租房协议书
2014/09/12 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
学术研讨会主持词
2015/07/04 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python