浅谈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中实现贪婪排名算法的教程
Apr 17 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
python实现超简单的视频对象提取功能
Jun 04 Python
详解python 3.6 安装json 模块(simplejson)
Apr 02 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
python函数与方法的区别总结
Jun 23 Python
python处理大日志文件
Jul 23 Python
深入浅析Python科学计算库Scipy及安装步骤
Oct 12 Python
django xadmin中form_layout添加字段显示方式
Mar 30 Python
Django import export实现数据库导入导出方式
Apr 03 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
python执行js代码的方法
May 13 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下获取客户端ip地址的函数
2010/03/15 PHP
php显示时间常用方法小结
2015/06/05 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
PHP递归算法的简单实例
2019/02/28 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
js计算页面刷新的次数
2009/07/20 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
axios学习教程全攻略
2017/03/26 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
Python imread、newaxis用法详解
2019/11/04 Python
大学新生军训感言
2014/02/25 职场文书
企业金融服务方案
2014/06/03 职场文书
医学求职自荐信
2014/06/21 职场文书
医学生求职信
2014/07/01 职场文书
平面设计师岗位职责
2014/09/18 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
入股协议书范本
2014/11/01 职场文书
革命电影观后感
2015/06/18 职场文书