设置session过期时间
1如下是登录注册和记住密码的功能:
# -*- coding: utf-8 -*-
def cms_login(request):
if request.method == 'GET':
return render(request,'cms_login.html')
else:
form = LoginForm(request.POST)
if form.is_valid():
# user = UserModel(username=username)
# user.password == hash(password)
username = form.cleaned_data.get('username',None)
password = form.cleaned_data.get('password',None)
#if hash(password) == AuthorModel.objects.filter().first().password
user = authenticate(username=username,password=password)
if user and user.is_active:
login(request,user)
if remember:
request.session.set_expiry(None)
else:
request.session.set_expiry(0)
nexturl = request.GET.get('next')
# return redirect(reverse('cms_index'))
print 'nexturl=',nexturl
if nexturl:
return redirect(nexturl)
else:
return redirect(reverse('cms_index'))
else:
return render(request,'cms_login.html',{'errors':u'用户名或密码错误'})
else:
return render(request,'cms_login.html',{'errors':form.errors})
如何设置sessiond的过期时间:
session的有效期时间是通过request.session.set_expiry(value)进行设置的。
- 如果value是一个int类型,那么session将在value这个时间后过期,其中value代表的是秒。
- 如果value是一个datetime或者timedelta对象,那么这个session将在指定的时间后过期。datetime必须是使用了PickleSerializer进行序列化的。
- 如果value等于0,那么session将在web浏览器关闭后就直接过期。
- 如果value等于None,那么session将用settings.py中设置的全局过期字段SESSION_COOKIE_AGE,这个字段默认是14天,也就是2个礼拜。
- 读session的时候不会修改session的有效期,修改session的时候会重新设置session的有效期,会从修改的时间,重新计时。
- 如果settings.py中设置了SESSION_EXPIRE_AT_BROWSER_CLOSE=True,那么默认讲不再使用SESSION_COOKIE_AGE了,而是浏览器一关闭,session数据就会过期。这个值默认是为False。
session保存的设置:
session可以保存在文件,数据库,缓存以及cookie中,要设置session的保存路径,需要在settings.py中设置SESSION_ENGINE:
- 基于缓存的:django.contrib.sessions.backends.cache,如果设置缓存的,那么session中的所有数据将存储在内存中。同时,需要在settings.py中配置CACHES,一般我们使用memcached作为缓存,通过以下代码进行配置:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211'
}
} - 基于文件存储的:django.contrib.sessions.backends.file,那么需要配置SESSION_FILE_PATH来控制缓存的文件路径。
- 基于cookie的:django.contrib.sessions.backends.signed_cookies,那么所有的session数据都会被保存在cookie中。
- 基于数据库的:如果不配置SESSION_ENGINE,那么默认就是使用数据库来作为存储,如果需要显示配置,那么配置项是django.contrib.sessions.backends.db。
- 基于数据库+缓存的:django.contrib.sessions.backends.cached_db,这种情况,每次往缓存中写数据的时候,都会同步到数据库中,来做一个持久化。每次读session数据的时候,都优先从缓存中查找,如果缓存中没有这个值了,才从数据库中查找。
如何清除sessions数据:
session默认只是过期,为了考虑到数据的需要,django并不会从数据库或者文件中删除,所以这个要运维人员或者后台管理人员手动的清除那些已经过期了的session,最快捷的方式是通过命令定时的删除:python manage.py clearsessions,当然,如果backend是存储在cookie或者缓存中,那么他们将在过期后自动删除。
设置session过期时间的更多相关文章
- asp.net web.config 设置Session过期时间
在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...
- Asp.NET设置Session过期时间的四种方式
在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...
- C# asp.net IIS 在web.config和IIS中设置Session过期时间
有时候在web.config设置sessionState 或者类文件里设置Session.Timeout,在IIS里访问时每次都是达不到时间就超时,原因是因为在IIS中设置了Session的超时时间, ...
- 转:设置session过期时间
在Asp.net应用中,很多人会遇到Session过期设置有冲突.其中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会 ...
- YII2 设置session过期时间
设置session过期时间 如何在YII里设置SESSION过期时间,而不需要在php.ini里面设置. 在protected/config/main.php里,设置: 代码如下 复制代码 'comp ...
- asp中设置session过期时间方法总结
http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载 asp中默认session过期时间 ...
- 如何设置session过期时间为30分钟
今天在我的微博(Laruence)上发出一个问题: 我在面试的时候, 经常会问一个问题: “如何设置一个30分钟过期的Session?”, 大家不要觉得看似简单, 这里面包含的知识挺多, 特别适合考察 ...
- php中实现精确设置session过期时间的方法
http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下sessio ...
- 转:php中实现精确设置session过期时间的方法
原文来自于:http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下 ...
- C#如何设置session过期时间
1.操作系统 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉 右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在 ...
随机推荐
- dispaly:-webkit-box 布局中的坑
dispaly:-webkit-box 具体用法 这里大家可以网上查, 这里说下里面的坑 里面的子对象设置-webkit-box-flex: 1 -webkit-box-flex: 2 时:一般两个子 ...
- Assetbundle2
Assetbundle可以将Prefab封装起来,这是多么方便啊! 而且我也强烈建议大家将Prefab封装成Assetbundle,因为Prefab可以将游戏对象身上带的游戏游戏组件.游戏脚本.材质都 ...
- Spring实战第五章学习笔记————构建Spring Web应用程序
Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...
- [Effective Java] 创建和销毁对象篇
[Effective Java] 创建和销毁对象篇 1. 优先考虑用静态工厂方法代替构造器 优点: - 静态工厂方法相比于构造器,它们有名称 - 不需要每次在使用的时候创建一个对象 - 可以返回原返回 ...
- URAL 1741 Communication Fiend(最短路径)
Description Kolya has returned from a summer camp and now he's a real communication fiend. He spends ...
- jqprint导入jqgrid表格时,内容溢出的原因以及解决方法
jqprint在导入表格的时候,会将原表格的样式全部拉过来,所以说原表格(如jqgrid的表格)的内容在有滚动条的时候,必须得将宽度设置为100%(等百分比的宽度),不能设置成固定宽度,不然表格内容会 ...
- Java 实现一个带提醒的定时器
定时闹钟预览版EXE下载链接:https://files.cnblogs.com/files/rekent/ReadytoRelax_jar.zip 功能说明: 实现了一个休息提醒器,用户首先设定一个 ...
- WIN8/8.1/10换系统常见的几个问题
1.如果高级选项中没有UEFI固件设置,这该怎么进入BIOS呢? 答:还有一种方法是,首先关闭快速启动,然后重启,开机画面出来之后按F1,F2,F12,delete,总有一个是对的(不确定的话可以四个 ...
- javascript string对象方法replace
最简单的replace用法是: var str = 'aaaaa9876b0000'; str.replace(/a/g,'A'); 有时候我们希望只是在匹配的位置添加特定的字符: var str = ...
- kali linux下的常用bash命令
虚拟机版本默认用户root 密码toor ls:显示当前目录包含的文件及文件夹 ls -l:以常规格式显示当前目录包含的文件及文件夹(开头字母解释:d:目录 -:文件 c:设备文件 l:链接 b:块设 ...