关闭浏览器再打开,网站的自动登录以功能如何实现
Session是一种服务器端的对象,保存在服务器端。 每个session 有一个唯一的session id。 session的超时也是由服务器来控制。比如,在Django的配置中就有一项叫做SESSION_TIMEOUT的用来控制session超时时间。
而Cookie是由客户端进行保存的,其中会保存session id这一项,用以记录服务器端的session 正因为有此一项,我们在关闭浏览器后再打开浏览器,如果cookie仍然记住了之前的session id,就导致可以自动登录。
那么cookie什么情况下会记住session id,什么情况下又记不住呢?这就要说到2种cookie:内存cookie和硬盘cookie
Cookie分为内存Cookie(也可以说是进程中Cookie)和硬盘Cookie。大部分的session机制都使用进程中Cookie来保存session id,关闭浏览器后这个进程自动消失了,因此Cookie和Cookie中的session id也消失了,再次连接到服务器时无法找到原来的session 所以,在这种情况下,就是需要再次输入密码登录的。但是保存在硬盘中的cookie却不会丢失session id,所以即使关闭浏览器再打开,也是仍能连得上上一次的session,从而可以自动登录。
又比如说,我们可以在登录时选择“下次自动登录”,例如CSDN的“记住我一周”,或者我们的购物车信息可以在切换不同浏览器时依然可用。这时用到的就是硬盘Cookie,此时,session id将长期保存在硬盘上的Cookie中,直到session失效为止。
除了session和cookie,还有一个常见的服务器端配置项,在Django中叫做 SESSION_EXPIRE_AT_BROWSER_CLOSE 望文生义,看上去将这个配置项设为True,似乎就可以做到“在重启浏览器之后,必须手动输入密码才能登录”了。其实不然。服务器其实并不知道浏览器关闭了没有,所以关闭浏览器时服务器是不会删除session的,也正是这个原因服务器才会设置一个session的失效时间,不然服务器的资源就会被耗尽。所以当session的失效时间到了,服务器便会将相应的session删除。而我们可以在每一次和服务器的交互中,比如REST API请求和应答,都update当前session,比如sessionmodified = True, 则该session的超时时间会从当前时间点开始重新计算。
有人可能会说,服务器其实有办法知道浏览器关闭了没有。比如,在JS代码中使用windowonclose来监控标签页是否关闭,然后配合 SESSION_EXPIRE_AT_BROWSER_CLOSE = True ,这样就能够在关闭浏览器的时候清除session了。这么做基本能实现目标,但是也有一个较大的问题:因为在一个浏览器中,可能会有多个标签页,它们是属于同一个session的。当一个标签页被关闭后,该session被清除,会导致所有其他标签页都不可用了。这不会是用户希望得到的体验。
回到最初的问题:关闭浏览器再打开,或者说重启浏览器后,网站是否应该自动登录呢?
答:其实目前有许多网站是支持重启浏览器后自动登录的,比如GitHub 当然也有些是不支持的,比如网银。
如果要在程序中进行控制,该怎么做呢?笔者实验了一些方法,比如设置cookie的过期时间,但似乎没什么用;不过,可以在浏览器中进行控制。
比如,在Chrome的高级设置的Cookie中,有一项叫做“仅将本地数据保留到您退出浏览器为止”,默认是disable的,将其enable即可实现“重启浏览器,不会自动登录”了。Firefox也有类似的设置。但是,设置这个选项也是有很大副作用的,那就是所有网站都无法自动登录了,比如GitHub
所以,总结一下,“对于一般网站来说,即使重启浏览器,仍可以自动登录”,这基本是可以接受的。理由有2点:一、许多知名网站就是这么做的(这似乎不是个好理由);二、服务器端对session其实还是有超时时间控制的,常见的为1小时,当然也有数天的。但是,如果想从程序而不是浏览器的角度,比较完美地控制是否自动登录,笔者还没有找到好的办法。
1、在批处理自动登录远程桌面,需配置一个rdp的远程桌面参数的可执行文件。但不能自动登录,启动rdp文件时,需要“询问凭据”。
2、在rdp参数中有自动执行远程计算机的应用程序,选择“程序”,配置“启动时连接以下程序”,保存即可。
01
快速地在浏览器中网站:可以打开浏览器,点击菜单,选择选项,选择快捷键,在热键网址这里填入需要快速打开的网址即可。IE浏览器如何设置打开网站的方式:点击设置,然后点击internet选项,在常规选项中找到标签页这个选项,点击进入即可任意设置打开网页的方式。当遇到浏览器打不开网站的情况时:可以采用点击局域网设置等步骤进行检查网络是否连接正常。
如何快速地在浏览器中打开一个网站:
1、打开浏览器,并在浏览器的右侧顶部找到并点击菜单选项。
2、在菜单的下拉菜单中找到并单击鼠标左键选择选项,如图中所示。
3、在如图中所示区域中选择快捷键,并进入下一步的操作
4、将页面拉到最底下,有一个热键网址,在这里填入需要快速打开的网址,如图中所示。
5、输入想要快速打开的网址,在旁边空白处任意点击一下就会出现设置保存成功的字样。这个时候只要打开浏览器按一下F1就会出现百度的页面了,可以设置很多的快捷网址。
IE浏览器如何设置打开网站的方式:
1、打开任意一个ie浏览器,点击设置,然后点击internet选项。
2、在常规选项中找到标签页这个选项,点击进入。
3、在这里面,你可以任意设置打开网页的方式。
当遇到浏览器打不开网站的情况时,可以按以下步骤进行:
1、首先,先检查一下你的网络是否连接正常,因为一般我们打不开ie浏览器都是显示“为连接网络”或“页面连接错误”,这种情况,我们找到菜单的工具。
2、找到后点击打开,然后在最下方可以看到internet选项,点击进入选项。
3、点开后,会出现一个框框,在框框上方找到连接,然后点击进入页面。
4、打开连接的界面后,下方有一个局域网设置按钮,点击按钮进入。
5、打开局域网设置后,会弹出一个小框,找到“为LAN使用代理服务器(这些设置不用于拨号或***连接)(X) ”,把这句话前面框里的勾勾去掉,然后点下面的确定。
6、要是还没有解决问题,我们返回到internet选项界面上,在上方找到高级选项,点击进入。
7、在高级页面上找到下方的internet explore选项旁边的重置按钮,点击。
8、系统会弹出一个重置信息的小框,在页面上可以选择保留个人资料,建议最好一起重置,再点击下方的重置按钮,就可以了。
0条评论