浅谈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 08 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
python 等差数列末项计算方式
May 03 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
Django 构建模板form表单的两种方法
Jun 14 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
python为什么要安装到c盘
Jul 20 Python
Django 实现图片上传和下载功能
Dec 31 Python
Python基础之tkinter图形化界面学习
Apr 29 Python
pandas中DataFrame重置索引的几种方法
May 24 Python
Django REST framework 限流功能的使用
Jun 24 Python
Python pyecharts绘制条形图详解
Apr 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
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
FCKeditor添加自定义按钮
2008/03/27 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
Python 调用DLL操作抄表机
2009/01/12 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
python logging.info在终端没输出的解决
2020/05/12 Python
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
Linux文件系统类型
2012/02/15 面试题
公共艺术专业自荐信
2014/09/01 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
党支部意见范文
2015/06/02 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
Go遍历struct,map,slice的实现
2021/06/13 Golang
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技