Token与Cookie+Session区别

Token与Cookie+Session区别 在了解Token与Cookie+Session技术的直接区别之前,需要了解HTTP协议,以下是MDN的介绍: HTTP 是无状态的:在同一个连接中,两个执行成功的请求之间是没有关系的。这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互,比如在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品。而使用 HTTP 的标头扩展,HTTP Cookie 就可以解决这个问题。把 Cookie 添加到标头中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态。 HTTP 最早期的模型和 HTTP/1.0 的默认模型,是短连接。每一个 HTTP 请求都由它自己独立的连接完成;这意味着发起每一个 HTTP 请求之前都会有一次 TCP 握手,而且是连续不断的。 在传统Cookie+Session中,当向服务器请求验证后,当登录成功服务端会生成Session,并将SessionId通过Set-Cookie发送给客户端,然后客户端将Cookie保存后,后续每次进行请求时,会携带Cookie一起发送给服务端,服务端验证Cookie中的SessionId后(即鉴权)再予以相应操作。 在Token请求中,与Cookie+Session类似,在向服务器请求验证后,服务器会对当用户生成一个唯一Id即token,这个token即代表着这个用户,服务端将token传输给客户端,后面客户端请求时带上这个token就行,后续请求时,服务端只需要验证token库中是否存在当前token即可完成验证。 注意MDN这一句话:同一个链接中,两个执行成功地请求之间是没有关系的。正因为HTTP的无状态,请求之间无关,在类似WebSocket的长连接中,通常使用Session来管理服务端与客户端的链接,在HTTP下是不需要的。因为无状态,所以每次请求都会携带token,使用在服务端只需要验证token的状态即可实现鉴权,同时使用Token与Session相比,Session中参数更多,保存需要更多的空间,而Token可以是一个字符串或数字,空间占用远小于session所占用的空间。

April 20, 2023 · 1 min · 23 words · ecturing

家庭网络布局设计

家庭网络布局设计 网络拓扑图 router0为运营商光猫。两个无线路由器均开启路由功能。 Mercury为全千兆路由,三个千兆口,Wan口与Lan口自动选择 TP为全百兆路由,一个Wan,三个Lan口 光猫自带一个千兆口,三个百兆口。 需求分析 香橙派服务器包含NAS系统,实现全屋路由器覆盖区域均能访问服务器服务。但普联路由器无配置静态路由选项,无法访问水星路由下的香橙派服务器。目标实现普联路由器能访问服务器。 方案分析 静态路由 静态路由配置是多路由连接时实现不同网段访问的最简单的配置选项,通过配置普联路由的静态路由,将需要访问水星路由下服务器网段添加到静态路由表中,但是由于普联路由器不支持静态路由,此法行不通。 DMZ服务 百度百科解释为: DMZ是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业内部网络和外部网络之间的小网络区域内。在这个小网络区域内可以放置一些必须公开的服务器设施,如企业Web服务器、FTP服务器和论坛等。另一方面,通过这样一个DMZ区域,更加有效地保护了内部网络。因为这种网络部署,比起一般的防火墙方案,对来自外网的攻击者来说又多了一道关卡。 更加通俗的解释为:DMZ是一个服务,可以将局域网网中的某些服务暴露到广域网。在通过路由器拨号连接互联网的网络中,开启DMZ会将某些服务之间暴露到公网中。在上述网络拓扑图中,开启Mercury路由的DMZ服务,将OrangePi的IP地址设置为DMZ暴露地址。这样OrangePI就暴露在Router0的子网下,在TP-Link下的设备,由于NAT转换的存在可以访问Router0的子网设备,也就是Mercury路由器,由于开启了DMZ服务,这样我们直接访问Mercury的IP地址等同于 直接访问OrangePi服务器。同时可以发现DMZ服务会将整个服务器暴露到上级网络,所以当需要暴露到公网时,请对DMZ主机做防火墙。 虚拟服务器 虚拟服务器与DMZ有一定相似之处,他们都是为了将服务映射到广域网,DMZ服务会将整个设备映射到广域网,但是虚拟服务器可以只用单独映射端口,比如我有一个Samba文件共享服务器,我将在路由上对内网服务器445端口进行映射,这样广域网设备可以直接连接到内网的Samba服务 路由桥接 网络拓扑图中,将TP-LINK路由器的lan口连接到Mercury的lan口,wan口不连接,这样TP-Link路由就桥接到了Mercury的子网,所有连接到该路由器的设备都属于Mercury的子网,这样TP-LINK的设备均能访问Mercury的服务器。

January 3, 2023 · 1 min · 20 words · ecturing

Java多线程

Java 多线程 一.线程实现 线程的三种实现 继承Thread类 不推荐使用继承Thread类,应为java只能单继承,如果要继承其他类则无法实现 1 2 3 4 5 6 7 8 9 public class ThreadTest extends Thread{ public static void main(String[] args) { new ThreadTest().start(); } @Override public void run() { System.out.println("fuck you"); } } 实现Runnable接口 推荐使用Runnable接口,实现Runnable接口可以继承其他类,避免局限性 1 2 3 4 5 6 7 8 9 public class RunnableTest implements Runnable{ public static void main(String[] args) { new Thread(new RunnableTest()).start(); } @Override public void run() { System.out.println("hello you"); } } 实现Callable接口...

November 3, 2021 · 2 min · 262 words · ecturing