session、flask session知识的相关收集-阿里云开发者社区

开发者社区> 王小闹儿> 正文

session、flask session知识的相关收集

简介: 1、打开两个浏览器窗口访问应用程序会使用同一个session还是不同的session session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的session id (搞错了,是sessionstorage不共享) 2、保存session id的几种方式 A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。
+关注继续查看

1、打开两个浏览器窗口访问应用程序会使用同一个session还是不同的session

session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的session id

(搞错了,是sessionstorage不共享

2、保存session id的几种方式

A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

B.由于cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够把session id传递回服务器,经常采用的一种技术叫做URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。

C.另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。(我需要这个)

3、session什么时候被创建

一个常见的错误是以为session在有客户端访问时就被创建,然而事实是直到某server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被创建。

来源链接:https://www.jianshu.com/p/64241eebc60b

 

4、session存在的问题

Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。

而Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。关于Google、Baidu、Sina来说,Cookie或许是唯一的选择。

来源链接:https://juejin.im/entry/5766c29d6be3ff006a31b84e

 

5、cookie的局限性

Cookie功能需要浏览器的支持。

如果浏览器不支持Cookie(如大部分手机中的浏览器)或者把Cookie禁用了,Cookie功能就会失效。

6、session机制

Session机制决定了当前客户只会获取到自己的Session,而不会获取到别人的Session。各客户的Session也彼此独立,互不可见。(棒!)

7、session的创建

Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用request.getSession(true)强制生成Session。

Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。

8、session的有效期以及修改方式

为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

Session的超时时间为maxInactiveInterval属性,可以通过对应的getMaxInactiveInterval()获取,通过setMaxInactiveInterval(longinterval)修改。

Session的超时时间也可以在web.xml中修改。另外,通过调用Session的invalidate()方法可以使Session失效。

9、session对浏览器的要求

虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。

同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。

如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写

来源链接:https://www.cnblogs.com/zhouhbing/p/4204132.html

 

10、session是一个字典,它是如何保持登录状态的?它是怎样知道两次请求是同一个用户的?

只要 session 在每一个请求中是隔离的,那只需要在 session 中存储 login=True 的键值对,那么只要 session 中有这样的键值对,即可以表明发起该次请求的用户是登录的。每一次请求的 session 是隔离的,那么在 session 中存储 user_id=xxx,如果某两次请求的 user_id 是相同的,那么这两次请求的用户即是相同的。

11、cookie的有效期

默认的 cookie 的有效期是当前会话,意思就是说,只要当前浏览器还没有关闭,就算当前页面关闭或者其他跳转到其他页面,再次回到该页面,cookie 还是保存着的

来源链接:https://windard.com/blog/2017/10/17/Flask-Session

 

12、在flask中使用session

在flask中使用session的前提是给app指定了一个 secret_key属性,可以通过配置文件来设置此属性。 flask中session是一个全局对象,就像request一样,每一个请求的上下文中都有一个 session 全局对象。

参考链接(链接里有个代码案例):http://litaotju.github.io/flask/2016/06/22/Learning-Flask-session/

 

13、一些flask session代码样例参考链接

https://www.letiantian.me/2014-06-28-flask-session/

https://www.jianshu.com/p/805f33f096d6

http://litaotju.github.io/flask/2016/06/22/Learning-Flask-session/

 

14、如果cookie被禁用,如何使用session(以后需要添加这个功能)

session的实现方式有两种

第一种:通过cookies实现。如果浏览器支持cookies,创建session的时候会把sessionID放在 cookies里面;

第二种:通过重写URL。如果浏览器不支持cookies,可以自己编程使用URL重写的方式实现session(访问页面的时候在地址栏里面,URL后会跟上sessionID,效果见展示图2)。

参考链接:https://www.zhihu.com/question/35307626

https://blog.csdn.net/u014225431/article/details/51644180

 

15、未来需要解决的任务——重复提交出现弹框问题(亲测确实会出现。。。)

之所以出现这种情况,是因为刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。如果最后一个请求是POST,浏览器就会把上次输入的url再次post给服务端。。。

参考链接:https://www.jianshu.com/p/46fd7e66b7d5

 

16、表单提交时同时提交隐藏字段

https://blog.csdn.net/dengpeng0419/article/details/55045047

下面的两个链接留作参考(如果用的话,index.html还要改成bootstrap框架的,比较繁琐)

https://flask-bootstrap-zh.readthedocs.io/zh/latest/forms.html

https://zhuanlan.zhihu.com/p/23605789

隐藏字段可以用js的  math.random()函数随机生成

 

17、修改元素的value值(表单提交的隐藏字段就是提交value的值,这个值要用函数随机生成)

https://blog.csdn.net/a491857321/article/details/51780674

 

18、js随机生成一定位数的密码

https://blog.csdn.net/qq_30100043/article/details/78034852

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4019 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6372 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
2186 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3962 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5692 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
4964 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
10718 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
3812 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
16291 0
+关注
王小闹儿
应届c++
108
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载