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简单分割文件的方法
Jul 30 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
机器学习python实战之手写数字识别
Nov 01 Python
Django中使用Celery的方法示例
Nov 29 Python
Python通用循环的构造方法实例分析
Dec 19 Python
Python生成rsa密钥对操作示例
Apr 26 Python
python 同时读取多个文件的例子
Jul 16 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
Python基础教程之输入输出和运算符
Jul 26 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 Python
Autopep8的使用(python自动编排工具)
Mar 02 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在线代理转向代码
2012/05/05 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
美丽的现代设计家具:2Modern
2018/07/26 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
小学生寒假家长评语
2014/04/16 职场文书
雷人标语集锦
2014/06/19 职场文书
作风整顿剖析材料
2014/09/30 职场文书
小学语文新课改心得体会
2016/01/22 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python