利用session实现三天免登陆

cstdio1      2022-02-16     480

关键词:

什么是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的某个属性是否为空,如果为空就不做处理让它登录,否则重定位到首页(登录成功界面)

登录成功添加数据到Session

技术图片

 

 

 首页判断

技术图片

 

用户登录之7天免登陆(垃圾回收机制)(代码片段)

//设置垃圾回收机制ini_set(‘session.gc_probability‘,‘1‘);ini_set(‘session.gc_divisor‘,‘1‘);Config::set(‘session.expire‘,3600*24*7);session.gc_divisor与session.gc_probability合起来定义了在每个会话初始化时启动gc(garbagecollection垃圾回收)进程的... 查看详情

进销存系统_实现7天免登陆(代码片段)

一、实现7天免登陆1.1、免登录基本原理用户认证成功之后调用RemeberMeService根据用户名生成token,由TokenRepository写入到数据库,同时也将token写入到浏览器的cookie中。重启服务之后,用户再次登入系统会RememberMeAuthenticat... 查看详情

利用session+application+cookie实现单态登陆,且解决浏览器意外关闭的问题

...,储存登陆的管理员信息。同时为了实现登陆超时,也在session中存放登陆对象,通过设置session的listener监控session的消亡, 查看详情

七天免登陆

<!DOCTYPEhtml><htmllang="en"><head>   <metacharset="UTF-8">   <title>Title</title>   <scripttype="text/javascript"&g 查看详情

asp.net怎么利用session对象使用户在登录页面实现登录之后,然后首页显示用户名

通过Session形式存储啊。加入在你登陆验证的方法中,在获取成功登陆哪步,加上Session["UserName"]=UserName;这个当前的用户名就存到名为UserNmae中去了,然后再登陆成功页面后,在把它取出来,加入你使用<Lable>接收并显示... 查看详情

13servlet——session案例2:用户登录主页显示用户名和注销登录

...,我们在判断用户账号密码正确后,跳转主页之前,创建session并将用户对象添加到session中,在主页获取session中的对象即可。同样地,在3天免登陆的情况下,在cookieServlet中跳转主页之前,创建session并将用户对象添加到session中,在... 查看详情

session登陆浏览,并实现session注销登陆

 <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><ht 查看详情

利用cookie账号密码如何实现网站自动登录

...陆'==================================Sub UserLogin(url)If Session("User_data")="" Then '判断是否已经登陆 s_CookiesName = check_Cookies("会员名称",Request.Cookies("Scs_Login_Info")("user_name"))&... 查看详情

装饰器实现session登陆验证功能

装饰器登陆验证功能1.装饰器模板defauth(func):definner(request,*args,**kwargs):#####可以写装饰内容##########此装饰器没有添加任何操作,是个模板装饰器写法response=func(request,*args,**kwargs)#返回response值returnresponse#返回内部函数结果returninner2.... 查看详情

利用session实现一次验证码

Session可避免表单的重复提交:实现一次表单提交,可避免恶意提交; 1.首先建立一个Servlet类:ValidateColorServlet,里边有获取验证码的方法,并且验证码是大小写区分:publicclassValidateColorServletextendsHttpServlet{publicstaticfinalStringCH... 查看详情

用cookie实现一天免登录功能(代码片段)

Servlet程序:packagecom.westos.untitle2;importcom.westos.untitle2.CityService.UserService;importcom.westos.untitle2.bean.User;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServle 查看详情

网页免登陆实现

...改的风险,所以其实服务器判断用户登陆状态,一般都是用SESSION的...SESSION的数据存储在服务器中,但是必须通过客户端的COOKIE来找到对应的SESSION所以用户 查看详情

场景应用:利用redis实现分布式session(代码片段)

文章目录原理:Redis实现分布式Sessionweb开发session分布式session同步问题分布式session解决方案实战:Redis实现分布式Session技术栈:SpringSessionSpringSession支持功能SpringSession实战步骤1:依赖包步骤2:启动类与配置文... 查看详情

场景应用:利用redis实现分布式session(代码片段)

文章目录原理:Redis实现分布式Sessionweb开发session分布式session同步问题分布式session解决方案实战:Redis实现分布式Session技术栈:SpringSessionSpringSession支持功能SpringSession实战步骤1:依赖包步骤2:启动类与配置文... 查看详情

.netcore利用actionfilter实现session过期自动跳转(代码片段)

利用actionFilter实现session过期自动跳转记得以前在webfrom时代,采用重写page基类方式判断session是否过期,如何在每个页面上继承自定义重写的page类。那么在mvc或netcore中又如何实现呢?搜索了一些方法,网上很多也... 查看详情

shiro登陆成功保存用户信息到session

  我们经常会需要把登录成功后的用户信息保存到session中,但是如果我们使用shiro做权限管理,该怎么去实现呢?其实很简单  第一步:写一个类CustomFormAuthenticationFilter继承FormAuthenticationFilter,并重写onLoginSuccess方法,以下... 查看详情

php中如何使用session来实现在一个页面登陆后才能访问另外一个页面

...,所以很多人不敢答,我写一个例子:登录页面:<?phpsession_start();//在最顶端,不要有输出$_SESSION['test']='abc';//直接把用户名abc赋予test?>其他要登录才能看的页面:<?phpsession_start();if(isset($_SESSION['test']))//... 查看详情

利用缓存实现session共享(代码片段)

...在A服务器上登录后,登录信息会存放在A服务器上的session中,之后若该用户的请求被分配到B服务器上,会出现请求错误,因为B服务器上没有该用户的登录信息,因此考虑将session放在缓存中,实现session在... 查看详情