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中的map、reduce和filter浅析
Apr 26 Python
Python实现子类调用父类的方法
Nov 10 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
python3判断url链接是否为404的方法
Aug 10 Python
python版本单链表实现代码
Sep 28 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
Python匿名函数及应用示例
Apr 09 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
python如何通过twisted搭建socket服务
Feb 03 Python
QT5 Designer 打不开的问题及解决方法
Aug 20 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 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小偷的核心程序
2007/04/09 PHP
PHP Pear 安装及使用
2009/03/19 PHP
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
location.href用法总结(最主要的)
2013/12/27 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
javascript验证身份证号
2015/03/03 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
vue filters的使用详解
2018/06/11 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
详解Python中find()方法的使用
2015/05/18 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
2014教师年度工作总结
2014/11/10 职场文书
医院病假条怎么写
2015/08/17 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python