浅谈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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
Python中input与raw_input 之间的比较
Aug 20 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
python匿名函数的使用方法解析
Oct 10 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
为什么说python适合写爬虫
Jun 11 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 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
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
js 字符串操作函数
2009/07/25 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
再谈JavaScript线程
2015/07/10 Javascript
详谈javascript异步编程
2016/02/21 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
使用python生成目录树
2018/03/29 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
营销主管自我评价怎么写
2013/09/19 职场文书
学前班教师的自我鉴定
2013/12/05 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
护士求职自荐信范文
2014/03/19 职场文书
活动策划求职信模板
2014/04/21 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
名人演讲稿范文
2014/09/16 职场文书
公司总经理岗位职责
2015/04/01 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
天那边观后感
2015/06/09 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android
Java spring单点登录系统
2021/09/04 Java/Android
Python中递归以及递归遍历目录详解
2021/10/24 Python
Python实现归一化算法详情
2022/03/18 Python