Django的session中对于用户验证的支持


Posted in Python onJuly 23, 2015

用户与Authentication

通过session,我们可以在多次浏览器请求中保持数据, 接下来的部分就是用session来处理用户登录了。 当然,不能仅凭用户的一面之词,我们就相信,所以我们需要认证。

当然了,Django 也提供了工具来处理这样的常见任务(就像其他常见任务一样)。 Django 用户认证系统处理用户帐号,组,权限以及基于cookie的用户会话。 这个系统一般被称为 auth/auth (认证与授权)系统。 这个系统的名称同时也表明了用户常见的两步处理。 我们需要

    验证 (认证) 用户是否是他所宣称的用户(一般通过查询数据库验证其用户名和密码)

    验证用户是否拥有执行某种操作的 授权 (通常会通过检查一个权限表来确认)

根据这些需求,Django 认证/授权 系统会包含以下的部分:

    用户 : 在网站注册的人

    权限 : 用于标识用户是否可以执行某种操作的二进制(yes/no)标志

    组 :一种可以将标记和权限应用于多个用户的常用方法

    Messages : 向用户显示队列式的系统消息的常用方法

如果你已经用了admin工具(详见第6章),就会看见这些工具的大部分。如果你在admin工具中编辑过用户或组,那么实际上你已经编辑过授权系统的数据库表了。
打开认证支持

像session工具一样,认证支持也是一个Django应用,放在 django.contrib 中,所以也需要安装。 与session系统相似,它也是缺省安装的,但如果它已经被删除了,通过以下步骤也能重新安装上:

    根据本章早前的部分确认已经安装了session 框架。 需要确认用户使用cookie,这样sesson 框架才能正常使用。

    将 'django.contrib.auth' 放在你的 INSTALLED_APPS 设置中,然后运行 manage.py syncdb以创建对应的数据库表。

    确认 SessionMiddleware 后面的 MIDDLEWARE_CLASSES 设置中包含 'django.contrib.auth.middleware.AuthenticationMiddleware' SessionMiddleware。

这样安装后,我们就可以在视图(view)的函数中处理user了。 在视图中存取users,主要用 request.user ;这个对象表示当前已登录的用户。 如果用户还没登录,这就是一个AnonymousUser对象(细节见下)。

你可以很容易地通过 is_authenticated() 方法来判断一个用户是否已经登录了:

if request.user.is_authenticated():
  # Do something for authenticated users.
else:
  # Do something for anonymous users.

Python 相关文章推荐
在Python中使用matplotlib模块绘制数据图的示例
May 04 Python
10个Python小技巧你值得拥有
Sep 29 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
Python爬虫设置代理IP(图文)
Dec 23 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
Django给admin添加Action的步骤详解
May 01 Python
python中的列表与元组的使用
Aug 08 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
python常用排序算法的实现代码
Nov 08 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
python 命名规范知识点汇总
Feb 14 Python
在Django的视图(View)外使用Session的方法
Jul 23 #Python
在Python的Django框架的视图中使用Session的方法
Jul 23 #Python
详解Python的Django框架中的Cookie相关处理
Jul 22 #Python
在Django中使用Sitemap的方法讲解
Jul 22 #Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 #Python
利用Python的Django框架生成PDF文件的教程
Jul 22 #Python
在Python的Django框架中生成CSV文件的方法
Jul 22 #Python
You might like
PHP新手上路(十三)
2006/10/09 PHP
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
Python实现字典的key和values的交换
2015/08/04 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
python-地图可视化组件folium的操作
2020/12/14 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
《永远的白衣战士》教学反思
2014/04/25 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
教师年终个人总结
2015/02/11 职场文书