浅谈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 26 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
python中logging模块的一些简单用法的使用
Feb 22 Python
python3转换code128条形码的方法
Apr 17 Python
python pandas生成时间列表
Jun 29 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
Python Pandas 转换unix时间戳方式
Dec 07 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
Jan 08 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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
探讨如何把session存入数据库
2013/06/07 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
AngularJS语法详解
2015/01/23 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
Python回调函数用法实例详解
2015/07/02 Python
Python实现将xml导入至excel
2015/11/20 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
python面向对象 反射原理解析
2019/08/12 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
python实现在线翻译
2020/06/18 Python
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
幼儿园消防安全制度
2014/01/26 职场文书
人力资源主管职责范本
2014/03/05 职场文书
公司门卫岗位职责
2014/03/15 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
会计学习心得体会
2014/09/09 职场文书
高三复习计划
2015/01/19 职场文书
创业计划书之美甲店
2019/09/20 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript