Django的session中对于用户验证的支持
用户与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的Django框架中的Cookie相关处理
浏览器的开发者在很早的时候就已经意识到, HTTP's 的无状态会对Web开发者带来很大的问题,于是(cookies)应运而生. cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies 来看看它是怎么工作的. 当你打开浏览器并访问 google.com ,你的浏览器会给Google发送一个HTTP请求,起始部分就象这样: GET / HTTP/1.1 Host: google.com ... 当 Google响应时,
-
在Django的视图(View)外使用Session的方法
从内部来看,每个session都只是一个普通的Django model(在 django.contrib.sessions.models 中定义).每个session都由一个随机的32字节哈希串来标识,并存储于cookie中. 因为它是一个标准的模型,所以你可以使用Django数据库API来存取session. >>> from django.contrib.sessions.models import Session >>> s = Session.objects.g
-
深入探究Django中的Session与Cookie
前言 Cookie和Session相信对大家来说并不陌生,简单来说,Cookie和Session都是为了记录用户相关信息的方式,最大的区别就是Cookie在客户端记录而Session在服务端记录内容. 那么Cookie和Session之间的联系是怎么建立的呢?换言之,当服务器接收到一个请求时候,根据什么来判断读取哪个Session的呢? 对于Django默认情况来说,当用户登录后就可以发现Cookie里有一个sessionid的字段,根据这个key就可以取得在服务器端记录的详细内容.如果将这个字
-
在Python的Django框架的视图中使用Session的方法
SessionMiddleware 激活后,每个传给视图(view)函数的第一个参数``HttpRequest`` 对象都有一个 session 属性,这是一个字典型的对象. 你可以象用普通字典一样来用它. 例如,在视图(view)中你可以这样用: # Set a session value: request.session["fav_color"] = "blue" # Get a session value -- this could be called in
-
Django 中 cookie的使用
Cookie是浏览器在客户端留下的一段记录,这段记录可以保留在内存或者硬盘上.因为Http请求是无状态的,通过读取cookie的记录,服务器或者客户端可以维持会话中的状态.比如一个常见的应用场景就是登录状态.Django里面,对cookie的读取和设置很简单.Cookie本身的格式类似字典,因此可以通过request的key或者get获取:然后他的设置则是通过response对象的set_cookie设定; 如果要取消cookie,把过期时间设置为当前时间就行了. 获取Cookie: reque
-
在Django的session中使用User对象的方法
通过session,我们可以在多次浏览器请求中保持数据, 接下来的部分就是用session来处理用户登录了. 当然,不能仅凭用户的一面之词,我们就相信,所以我们需要认证. 当然了,Django 也提供了工具来处理这样的常见任务(就像其他常见任务一样). Django 用户认证系统处理用户帐号,组,权限以及基于cookie的用户会话. 这个系统一般被称为 auth/auth (认证与授权)系统. 这个系统的名称同时也表明了用户常见的两步处理. 我们需要 验证 (认证) 用户是否是他所宣称的用户(一
-
Django中的cookie与session操作实例代码
添加cookie: def login(req): if req.method=="POST": uf = UserInfoForm(req.POST) if uf.is_valid(): username = uf.cleaned_data["username"] password = uf.cleaned_data["password"] print username,password users = UserInfo.objects.fil
-
Django的session中对于用户验证的支持
用户与Authentication 通过session,我们可以在多次浏览器请求中保持数据, 接下来的部分就是用session来处理用户登录了. 当然,不能仅凭用户的一面之词,我们就相信,所以我们需要认证. 当然了,Django 也提供了工具来处理这样的常见任务(就像其他常见任务一样). Django 用户认证系统处理用户帐号,组,权限以及基于cookie的用户会话. 这个系统一般被称为 auth/auth (认证与授权)系统. 这个系统的名称同时也表明了用户常见的两步处理. 我们需要 验证 (
-
JSP开发中Apache-HTTPClient 用户验证的实例详解
JSP开发中Apache-HTTPClient 用户验证的实例详解 前言: 在微服务框架之外的系统中,我们经常会遇到使用httpClient进行接口调用的问题,除了进行白名单的设置,很多时候我们需要在接口调用的时候需要身份认证.翻了一下官方文档,解决方法很多,但是都不太符合实际业务场景,这里提供一种简单粗暴的解决方法. 解决方法:利用请求头,将验证信息保存起来. 实现代码: public class HttpClientUtils { protected static final Logger
-
django drf框架中的user验证以及JWT拓展的介绍
登录注册是几乎所有网站都需要去做的接口,而说到登录,自然也就涉及到验证以及用户登录状态保存,最近用DRF在做的一个关于网上商城的项目中,引入了一个拓展DRF JWT,专门用于做验证和用户状态保存.这个拓展比传统的CSRF更加安全.先来介绍一下JWT认证机制吧! Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准( (RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声明一般被用来在
-
django中账号密码验证登陆功能的实现方法
今天分享一下django的账号密码登陆,前端发送ajax请求,将用户名和密码信息发送到后端处理,后端将前端发送过来的数据跟数据库进行过滤匹配,成功就跳转指定页面,否则就把相对应的错误信息返回,同时增加一个小功能,在规定时间内超过规定的登录次数,就锁住无法登陆,等下一个时间段再允许登陆. 一.通过ORM创建一张历史登陆表 class login_history(models.Model): user = models.CharField(max_length=32, verbose_name='登
-
在yii中新增一个用户验证的方法详解
1.为什么要新增一个用户验证:因为我要将网站后台和前台做在同一个yii的应用中.但是前台也包含有会员的管理中心.而这两个用户验证是完全不同的,所以需要两个不同登陆页面,要将用户信息保存在不同的cookie或session中.所以需要在一个应用中增加一个用户验证2.yii的用户验证:在自定义用户验证前,我们首先要弄清楚yii的验证和授权方式.为了验证一个用户,我们需要定义一个有验证逻辑的验证类.在yii中这个类需要实现IUserIdentity接口,不同的类就可以实现不同的验证方 法.网站登陆一般
-
Django项目开发中cookies和session的常用操作分析
本文实例讲述了Django项目开发中cookies和session的常用操作.分享给大家供大家参考,具体如下: COOKIES操作 检查cookies是否存在: request.COOKIES.has_key('<cookie_name>') 获取cookies: request.COOKIES.get('visits', '1') if 'last_visit' in request.COOKIES: request.COOKIES['last_visit'] 设置cookies: resp
-
Django自带的用户验证系统实现
首先,我要说明一下,下面内容不是必须品,如果各位大神喜欢手写也是可以的,你也可以选择自带的功能来缩减你的代码量,提高效率! 第一步 系统配置用户表 首先,在models中创建用户表,导包 from django.contrib.auth.models import AbstractUser #创建用户表 class User(AbstractUser): username = models.CharField(max_length=200,unique=True) password = mode
-
SpringSecurity从数据库中获取用户信息进行验证的案例详解
基于 SpringBoot与SpringSecurity整合案例的修改: 数据库 user 表 注,密码是由 BCrypt 算法加密对应用户名所得. root $2a$10$uzHVooZlCWBkaGScKnpha.ZrK31NI89flKkSuTcKYjdc5ihTPtPyq blu $2a$10$mI0TRIcNF4mg34JmH6T1KeystzTWDzWFNL5LQmmlz.fHndcwYHZGe kaka $2a$10$/GMSSJ3AzeeBK3rBC4t8BOZ5zkfb38Il
-
Python django框架应用中实现获取访问者ip地址示例
本文实例讲述了Python django框架应用中实现获取访问者ip地址.分享给大家供大家参考,具体如下: 在django官方文档中有一段对request.META的解释: HttpRequest.META A standard Python dictionary containing all available HTTP headers. Available headers depend on the client and server, but here are some examples:
随机推荐
- Android Fragment的使用方法(翻译)
- Angularjs注入拦截器实现Loading效果
- 基于jquery实现瀑布流布局
- jquery获取下拉列表的值为null的解决方法
- AngularJS 验证码60秒倒计时功能的实现
- 关于PHP 如何用 curl 读取 HTTP chunked 数据
- php学习笔记 php中面向对象三大特性之一[封装性]的应用
- php使用json_encode对变量json编码
- python爬虫入门教程--利用requests构建知乎API(三)
- PHP获取一年有几周以及每周开始日期和结束日期
- SQLServer 批量导入目录文件
- 创建Flash站点的十大可用性技巧(转)
- 利用C语言来求最大连续子序列乘积的方法
- Javascript动态创建div的方法
- Java 得到集合中所有子集
- Java调用setStroke()方法设置笔画属性的语法 原创
- asp.net 页面输出缓存
- asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示例代码)
- PHP下载文件的函数实例代码
- Javaweb应用使用限流处理大量的并发请求详解