浅谈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编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
python网络编程之数据传输UDP实例分析
May 20 Python
Python基础篇之初识Python必看攻略
Jun 23 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 Python
python3.7 sys模块的具体使用
Jul 22 Python
Pycharm连接远程服务器并实现远程调试的实现
Aug 02 Python
OpenCV+face++实现实时人脸识别解锁功能
Aug 28 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
Python 文件数据读写的具体实现
Jan 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
php 生成饼图 三维饼图
2009/09/28 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
代码生成器 document.write()
2007/04/15 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
jsonp原理及使用
2013/10/28 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
朴素贝叶斯Python实例及解析
2018/11/19 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
大学生大二自我鉴定
2013/10/28 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
初中科学教学反思
2014/01/21 职场文书
团日活动策划书
2014/02/01 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
校庆活动方案
2014/03/31 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
python基于turtle绘制几何图形
2021/06/15 Python
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android