web-session

1. 介绍

  •   基于服务器内存的缓存(非持久化),可保存请求会话
  •   每个session通过sessionid来区分不同请求
  •   键值对形式存在的
  •   设置过期时间

2. api

  •   HttpSession session = request.getSession();
  •   session.setAttribute(String name,Object obj);
  •   session.getAttribute(String name);
  •   session.removeAttribute(String name);
  •   getCreationTime() session的创建时间
  •   getLastAccessedTime() 取得session的最后一次操作时间
  •   isNew() 判断是否取得新的session(新用户)

3. webXML设置过期时间

  session过期/失效(默认30分钟)

<session-config>
  <session-timeout>30</session-timeout>
</session-config>

4. 生命周期

4.1. 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?

默认情况下。不是。

如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。

Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);response.addCookie(c);

4.2. 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?

不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作

session的钝化:在服务器正常关闭之前,将session对象系列化到硬盘上

session的活化:在服务器启动后,将session文件转化为内存中的session对象即可。

4.3. session什么时候被销毁?

  1. 服务器关闭
  2. session对象调用invalidate()

5. 如果浏览器禁用Cookie,session还能用吗

不能,但又其他的解决方案

服务器在默认情况下,会使用Cookie的方式将sessionID发送给浏览器,如果用户禁止

Cookie,则sessionID不会被浏览器保存,此时,服务器可以使用如URL重写这样的方来发送sessionID.

使用Session区分每个用户的方式:

1、作为Cookie

2、作为隐藏域嵌入HTML表单中,附加在主体的URL中,通常作为指向其他应用程序页面的链接,即URL重写。

3、更加高效的方法:会话跟踪(Session)

浏览器在访问服务器上的某个地址时,不再使用原来的那个地址,而是使用经过改写的地址

(即,在原来的地址后面加上了sessionID)

如果是链接地址和表单提交,使用response.encodeURL(String url)生成重写后的URL

如果是重定向,使用response.encodeRedirectURL(String url)生成重写的URL

6. session Cookie区别

cookie

session

存放

客户脚览器或硬盘

服务端

Cookie只能保存key-va1ue直并且都是string

可以保存任何类型

客户端是否可洱作

可以在浏览器的html端通过js访问

不能操作

服务端是否操作

可以操作

可以操作

创建方式

Cookie(String name, String value)

req.getSession()

存放的数量

一般项目最多20个

对单个客户来说只有 一个共享的session

缺点

客户端禁用了 cookig,客户端不安全

占用服务器的资源,session中要少数据

nodebb-plugin-session-sharing是NodeBB的一个插件,它允许用户在多个站点之间共享登录会话信息。在不使用该插件时,每个站点都有自己独立的用户会话信息,用户需要在每个站点都单独登录才能访问其功能。 而使用nodebb-plugin-session-sharing插件后,用户只需要在其中一个站点进行登录,然后他们将能够自动登录到其他已安装此插件的站点上。这样一来,用户只需要登录一次,就可以方便地切换和访问多个站点,不再需要对每个站点都进行繁琐的登录操作。 该插件使用了JSON Web Tokens(JWT)来实现会话共享。JWT是一种安全的跨域认证机制,它使用了一种签名算法来验证数据的完整性和真实性。当用户登录到某个站点时,该插件会生成一个JWT,其中包含有关用户的身份验证信息。用户在跳转到其他站点时,该JWT将被传递给其他站点,并被用于验证用户的身份。 此外,nodebb-plugin-session-sharing还支持多站点间设置信任关系。站点可以将其他站点添加到信任列表中,从而允许在这些站点之间共享会话信息。这样,用户即使在不同的站点间切换,也可以保持登录状态,享受到无缝的用户体验。 总的来说,nodebb-plugin-session-sharing是一个方便实用的插件,可以大大简化用户在多个NodeBB站点间切换登录的流程,提升用户体验。同时,它使用了JWT来保证安全性,可靠性较高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值