浅谈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入门篇之列表和元组
Oct 17 Python
Python编程实现正则删除命令功能
Aug 30 Python
python opencv 直方图反向投影的方法
Feb 24 Python
python如何实现内容写在图片上
Mar 23 Python
python实现多线程网页下载器
Apr 15 Python
深入浅析Python的类
Jun 22 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
Python二维码生成识别实例详解
Jul 16 Python
Python3 合并二叉树的实现
Sep 30 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
python爬虫可以爬什么
Jun 16 Python
python 将Excel转Word的示例
Mar 02 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
session 的生命周期是多长
2006/10/09 PHP
phpMyAdmin 安装及问题总结
2009/05/28 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
PHP中的正则表达式函数介绍
2012/02/27 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
JavaScript WeakMap使用详解
2021/02/05 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
详解Python 正则表达式模块
2018/11/05 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
解释一下抽象方法和抽象类
2016/08/27 面试题
高中美术教学反思
2014/01/19 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
施工员岗位职责范本
2015/04/11 职场文书
药品开票员岗位职责
2015/04/15 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android