session cookie实现自动登录(下次自动登录)

你会发现, 只要登录的时候勾选上这个框框(ps: 你的提示文字最好使用label+for), 即使你关闭浏览器再重新打开还是"已经登录的状态", 可能你也知道, 大多网站都是用session记录标识, 因为使用cookie记录不太安全, 可以被伪造, 那么session关闭浏览器会清空, 那还乍的记录标识呢? 嘎嘎, 接着往下看
session+cookie验证登录
大概的思路是在登录成功后, 记录session标识, 并根据相关参数写入cookie, 当然不会包含重要信息, 每次用户刷新页面, 会进行session判定, 如果没有, 则进行cookie判定, 如果正确则查库并写入session,大概伪代码是这样的:
每个页面初始化
开启session;

if(session存在){
    //已经登录
} else {
    if(指定cookie存在){
        //解密cookie
        if(匹配成功){
            //查询数据库
            if(有这个用户){
                //写入session, 这里是否还用更新cookie信息你说了算
            } else {
                //假的也想进我的站?
            }
        } else {
            //小样, 还想伪造 cookie? 嘎嘎
        }
    } else {
        //这里认为没有登录
    }
}

//这里已经知道用户登录的状态了
登录页面埋点
开启session;

if(各种表单验证通过){
    //写入session, 并提取uid,uname等不敏感信息再加自己的密钥生成唯一的token码, 用base64方式写入cookie, 这里为了让重启浏览器或者session过期后使用
}
但是你有没有发现, 如果为一个正常的用户, 在没有登录状态下, 上面初始化代码会在每个页面进行判定, 感觉不太帅, 且可能被别人伪造cookie, 如果站内涉及到$方面的事就更不好了, 于是改之:
session分权限等级方式
我们设置session标识, 0为未登录, 1为已登录, 2为cookie方式登录(这样就可以针对这样的用户进行再次验证), 然后我们需要改我们的伪代码.
页面初始化
开启session;

if(session存在){
    if(session > 0){
        //如果>0则说明已登录
    } else {
        //这里说明没有登录, 这个状态码是cookie验证没通过时留下的
    }
} else {
    //这里验证session不存在, 但可能cookie存在, 所以需要验证
    if(cookie存在){
        //这里进行解密
        if(成功){
            //查数据库
            if(成功){
                //session = 2, 为啥=2? 因为打上标识说明这次的登录方式是使用cookie验证登录的, 以方便在进行安全操作的时候再次验证
            } else {
                // session = 0
            }
        } else {
            //session = 0
        }
    } else {
        //cookie不存在的话视为没有登录, 这里把session标识 = 0, 以方便下次验证
    }
}
登录页面埋点
开启session;

if(各种表单验证通过){
    // session = 1, 打上标识说明是正常登录方式, 并生成token存入cookie以便下次使用
}
重要操作时再次验证, 比如: 交易等
开启session;

if(session===2){
    //弹出登录层 或者 跳转到登录页面再次验证, 是不是觉得跟taobao.com很像, 嘎嘎
}
致此验证完比, 当然实际使用哪种方式对token进行加密视项目情况而定, 但建议别使用敏感信息, 因为cookie你懂的...
你可能会想到这些问题
问: 清空cookie后这种方式就不行了?
答: 是的, 目前再主流的站, 只要你把缓存清空, 这里缓存包括任何, 比如 cookie, localStorage, sessionStorage, userDB, Web SQL, IndexdDB等, 你再重启浏览器, 我就不信你还是登录状态...(ps: 什么, 真的还是? 请留言反馈给我, 谢谢)
问: 这样岂不是知道cookie就可以直接登录?
答: 理论上是的, 只要用户知道你的加密方式, 写入个cookie理论是ok的, 但重要的地方建议登录再次验证, 当然只能说你点被...
问: 我复制某人的cookie岂不是就直接登录了?
答: 理论上还真是, 这可能就涉及到注入,攻击啥的了, 那如果这样的话, 要不是把浏览器相关信息+系统相关信息也加密到token里啊, 解密的时候再进行浏览器判断... 感觉好复杂啊...

时间: 2024-10-31 08:33:28

session cookie实现自动登录(下次自动登录)的相关文章

php中实现记住密码下次自动登录的例子_php实例

做网站的时候经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求.这种功能一般都是通过cookie来实现的.本篇文章将简单说一下如何使用php实现该需求的.当然实现该需求的方法有N多种. 整个过程就是用户在登陆的时候,如果选择了记住密码或者一周内免登陆等这个选项的时候,则在用户成功登陆操作完成之后,存储一个实现自动登录的cookie的数据到数据库的用户表里面,作为下次自动登录时验证用.验证通过则自动登录,否则需要输入用户名,密码进行登录.保存的这个cookie值则可以取一

JavaWeb开发使用Cookie创建-获取-持久化、自动登录、购物记录、作用路径_java

1.cookie是啥?随手百度了网友的说说 简单的说,Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机.当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,当下次你再光临同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你. 2.cookie在哪里? 3.cookie可以删除吗? 4.cookie实现原理 第一次请求浏览器,在浏览器的cookie存储区,没有co

JQuery记住用户名密码实现下次自动登录功能

  这篇文章主要介绍了JQuery记住用户名密码实现下次自动登录功能,本文直接给出实现代码,需要的朋友可以参考下 Jquery将用户名密码存储到cookie中 需要导入jquery.js和jquery.cookie.js ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 <html> <head> &l

Spring Security笔记:Remember Me(下次自动登录)

前一节学习了如何限制登录尝试次数,今天在这个基础上再增加一点新功能:Remember Me. 很多网站,比如博客园,在登录页面就有这个选项,勾选"下次自动登录"后,在一定时间段内,只要不清空浏览器Cookie,就可以自动登录. 一.spring-security.xml 最简单的配置 1 <http auto-config="true" use-expressions="true"> 2 ... 3 <remember-me /

Session过期后自动跳转到登录页面的实例代码_java

最近做了一个项目其中有需求,要实现自动登录功能,通过查阅相关资料,打算用session监听来做,下面给大家列出了配置监听器的方法: 1.在项目的web.xml文件中添加如下代码: <!--添加Session监听器--> <listener> <listener-class> 监听器路径 </listener-class> </listener> 2.编写java类. public class SessionListener implements

当Session失效后自动跳转到登录页(不改动页面代码的条件下)

问题描述 我想实现的是这样:当Sesssion失效后,如果用户再操作,自动跳转到登录页面!条件:不改动页面代码.因为我的页面太多了,一个一个改太麻烦了! 解决方案 解决方案二:web.config<customErrorsmode="On"defaultRedirect="Login.aspx"></customErrors>解决方案三:哦,我试试!就这么简单?解决方案四:好用吗?告诉我一声呗,也学学.解决方案五:错误的,<custom

详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)_java

在我们生活中,对于账户的自动登录已经很常见了,所以利用过滤器实现这个功能. 主要介绍用户的自动登录和取消自动登录,以及实现一天自动登录或者n天实现自动登录,当用户ip被加入到黑名单之后,直接利用过滤器返回一个警告页面. 过滤器的功能很是强大,我们只需要在写好的前台后servlet之后进行添加就可以实现这个功能 Ps:这个仅仅只是一个演示而已,里面的访问数据库的部分,自己随意模拟了下,主要是突出实现自动登录的功能. 前台代码: 前台代码是成功与否都在这个页面显示.用到的技术:jstl标签的应用,s

setopt-用php的curl模拟登录后自动跳转问题

问题描述 用php的curl模拟登录后自动跳转问题 我在使用curl模拟登陆时,模拟登录成功了,但是成功之后总是会自动跳转到另一个页面,请问我怎样才能使它不自动跳转呢? $url = "http://class.sise.com.cn:7001/sise/login_check.jsp"; // 设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_student.txt'; $curl = curl_init();//初始化curl模

打开一个页面要是没有cookies,会自动跳转到登录页面

问题描述 打开一个页面要是没有cookies,会自动跳转到登录页面 我做个网站,想要通过cookie实现登录.如果复制该网址在浏览器中打开的时候会自动跳转到login页面,怎么写 解决方案 cookie不能跨浏览器共享,标签式浏览器,你在一个标签登录保存cookie后,其他标签都会共享cookie,你要判断直接输入的地址不允许访问自己加个来源判断,不允许为空,要不cookie是存在肯定可以访问你页面的 解决方案二: 你用什么技术做的网站呢?jQuery提供了cookie插件 jquery.coo