通过Cookie存放用户登录信息以及安全性问题
来源:互联网 发布:ubuntu完美精简版 编辑:程序博客网 时间:2024/06/05 18:40
场景
一个系统中需要用户登录,当用户登录之后,用一个全局变量存放用户信息,当用户执行一些Action的时候,需要先验证用户信息是否存在,如果存在则往下执行方法,如果不存在则跳转到登录界面。当用户点击退出系统或者关闭浏览器的时候,用户信息将被清除。
尝试1
采用编写一个Model存放用户信息
写一个UserInfo的Model存放用户信息,但是发现Controller每次访问一个新的Action的时候都会重新加载Controller,导致Controller访问的这个UserInfo类的信息每次都是null
尝试失败~
尝试2
采用Cookies存放用户信息
当用户进入登录界面,首先检测用户名密码是否正确,然后将信息存放到Cookies中
Response.Cookies["username"].Value = username;
退出系统时,则将Cookies的时间设置为负数,则Cookies则会被清除
Response.Cookies["username"].Expires = DateTime.Now.AddDays(-1);
这里要注意一下,我之前对Cookies设置了存活时间(这也是接触Cookies时候给自己留下的一个固话概念,Cookies就需要设置时长),我关闭了浏览器之后,我仍可以直接输入相关的Action的url,跳过登录步骤,也就是说Cookies还未清除。
原因是如果一个Cookies没有设置时间,则该Cookies是加载到内存中,当关闭浏览器时,Cookies也将清除;如果设置了时间,则会将Cookies存储到一个文件中,只要时间没到,即使关闭了浏览器,Cookies信息仍然存在。
这样做了之后,点击退出系统,以及点击关闭浏览器都能成功将Coolies信息清除,如果直接输入系统内部的url是无法进入,并跳转到登录界面。
但是存在一个问题,如果用户关闭页面,浏览器仍然未关闭,Cookies信息还是没有清除,这时候还是可以直接输入url并成功进入。
因此,我想到用javascript来监听关闭页面,在javascript中清除Cookies信息的方法。
第一步:绑定窗口关闭方法:
$(window).bind('beforeunload', function () { DelCookie("username");});
第二步:
通过document.cookie方法获取所有cookies,根据key来得到需要删除的cookie,将该cookie设置截止时间为负数即可
function GetCookieValue(name) { var cookieValue = null; if (document.cookie && document.cookie != '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue;}function DelCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() + (-1 * 24 * 60 * 60 * 1000)); var cval = GetCookieValue(name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();}
这样就能够成功满足:
1 点击退出系统
2 关闭浏览器
3 关闭页面
就能够清除用户登录信息,直接输入系统内部url无法进入系统的需求。
- 通过Cookie存放用户登录信息以及安全性问题
- 存放用户登录信息 以及 Token 的工具类
- 通过cookie保存并读取用户登录信息实例
- 通过Cookie保存并读取用户登录信息
- 通过cookie保存并读取用户登录信息
- cookie记住用户登录信息
- php通过登录后的cookie以及用户代理然后通过curl获取网页内容
- 用户登录安全性的简单实例分析(Cookie、加密)
- 用户登录安全性的简单实例分析(Cookie、加密)
- 用户登录安全性的简单实例分析(Cookie、加密)
- 用户登录安全性的简单实例分析(Cookie、加密)
- 用户登录安全性的简单实例分析(Cookie、加密)
- cookie自动登录安全性
- 07-通过cookie保存并读取用户登录信息(jsp内置对象)
- cookie session 保存用户登录信息
- 用户登录之cookie信息安全
- 利用cookie保存用户登录信息初步
- 使用Cookie存取用户登录信息
- 同一个javaweb工程,部分页面在一个tomcat中能够正常交互,而在另一个tomcat无法正常使用
- 快速批量修改文件名
- spring优秀工具类盘点
- jdk 安装后 环境变量搭建
- 简介 Spring中的IOC,DI,AOP
- 通过Cookie存放用户登录信息以及安全性问题
- 16秋计算机JAVA第一节课作业(曾祥桓)
- Qt 学习之路 2(8):添加动作
- 以太网之物理层
- yii自带表单常用与ArrayHelper
- Hadoop for .NET Developers(八):以编程方式将数据加载到HDFS
- mysql 自定义函数declare group_concat()、find_in_set()
- 分库与分表带来的分布式困境与应对之策
- spring和hibernate注解整合