zoukankan      html  css  js  c++  java
  • 利用Session实现三天免登陆

    什么是Session

    Session:在计算机中,尤其是在网络应用中,称为“会话控制”。(百度百科)

    Session:服务器端的数据存储技术。

    Session要解决什么问题
    一个用户不同请求(重定位到一个Servlet,这个Servlet需要用到上一个Servlet的request对象)的处理需要使用相同的数据怎么办呢?
    解决:session技术
     
    Session生命周期
    当用户使用浏览器第一次向服务器发送请求的时候,服务器会调用相应的Servlet同时创建一个Session对象用于存储用户的某些信息,浏览器之后再向服务器发送其它请求的时候都会附带一个JSESSIONID(以Cookie形式存在于用户的浏览器),服务器在接收到请求后,调用对应的 Servlet 进行请求处理,同时根据 JSESSIONID 返回其对应的 session 对象。当用户超过30mins没有操作,服务器端对应的Session就会自动销毁。
    注意:Session处在于服务器端、JSESSIONID(Cookie形式存在)存在于浏览器。所以说Session技术依赖于Cookie技术。
     
    Session用法:
    req.getSession()
    1.如果请求中不存在JSESSIONID那么req.getSession()就会创建一个Session对象
    2.如果请求中不存在JSESSIONID那么req.getSession()就会获取对应的Session对象
    hs.setMaxInactiveInterval(arg0)
    设置Session对象存在时间,不设置默认30mins自动销毁(使用Session对象后又重新开始30mins计时)
     
    还有一种情况就是Session对象没销毁但JSESSIONID 丢失,一次会话(就是当你关闭浏览器JSESSIONID就会销毁),所以请求中不存在之前的JSESSIONID 便无法访问之前的Session对象。
     
    如何利用Session和Cookie解决免登陆问题
    eg我们都应该都有过这样的体验就是我们在访问某一网站的时候,只要我们第一次登录账号密码,下一次进入直接就是主页而不是登录界面。
     注意:我只是模拟一下,真正的免登陆不会讲用户名和密码存在Cookie而是将Uid(唯一表示用户的数据)存在Cookie中,通过Uid找到对应用户将用户名、密码存在Session对象当中。
    1.第一次访问登录界面并且用户名和密码匹配就获取用户数据保存到Cookie(用户名、密码)里面并创建Session对象保存信息到服务端。
    下次再访问登录界面的网址就先判断Cookie是否为空,不为空跳转到首页。

    2.当再一次访问登录页面的时候判断Cookie或者Session的某个属性是否为空,如果为空就不做处理让它登录,否则重定位到首页(登录成功界面)

    判断Cookie是否为空

    1.为空跳到登录界面

    2.不为空浏览人数+1跳到展示界面

    登录成功添加数据到Session

     首页判断

    不一样的烟火
  • 相关阅读:
    Maven打包时过滤测试代码或指定特定的测试类(maven-surefire-plugin)
    Maven项目配置外部依赖(本地依赖)
    手把手教你创建「人物角色Persona」
    微服务与Docker介绍
    深入学习微框架:Spring Boot
    技术干货:我们的项目是如何技术选型的
    为什么选择Spring Boot作为微服务的入门级微框架
    Android Material Design 兼容库的使用详解
    Android 实现QQ、微信、新浪微博和百度第三方登录
    Android ijkplayer详解使用教程
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11668121.html
Copyright © 2011-2022 走看看