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使用cookielib库示例分享
Mar 03 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
Aug 28 Python
python基于http下载视频或音频
Jun 20 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
django为Form生成的label标签添加class方式
May 20 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
python计算auc的方法
Sep 09 Python
Python常用断言函数实例汇总
Nov 30 Python
你需要掌握的20个Python常用技巧
Feb 28 Python
python高温预警数据获取实例
Jul 23 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下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
去除链接虚线全面分析总结
2006/08/15 Javascript
js的闭包的一个示例说明
2008/11/18 Javascript
JavaScript 调试器简介
2009/02/21 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
JS模板实现方法
2013/04/03 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
python游戏地图最短路径求解
2019/01/16 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
校长岗位职责
2013/11/26 职场文书
优秀交警事迹材料
2014/01/26 职场文书
阿德的梦教学反思
2014/02/06 职场文书
大学毕业感言50字
2014/02/07 职场文书
个人银行贷款担保书
2014/04/01 职场文书
一年级小学生评语
2014/04/22 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书