【黑马点评Redis——001短信登录】

本文探讨了Session在Web开发中的应用,包括Cookie和Session的区别,以及如何使用ThreadLocal解决多线程问题。还提到了在集群环境中session共享的问题及Redis作为session共享的替代方案。此外,文章包含了Nginx在MacM2中的安装问题和登录成功后的页面跳转修复技巧。
摘要由CSDN通过智能技术生成

1. 基于Session实现登录

在这里插入图片描述

2. 知识储备和课程内容

2.1 Cookie和Session

  1. Cookie
  • Cookie 是存储在用户计算机上的小型文本文件,由服务器发送到浏览器,并保存在用户的本地计算机上。
  • 每当用户访问网站时,浏览器都会将相关的 Cookie 发送回服务器,这样服务器就可以根据其中的信息来识别用户。
  • Cookie 主要用于跟踪用户的偏好和行为,如记住用户的登录状态、购物车内容、语言偏好等。
  • Cookie 可以设置过期时间,可以是会话级别的(浏览器关闭时过期)或者持久性的(在设定的过期时间之前一直有效)。
  1. Session
  • Session 是在服务器端保存的关于用户会话的信息,通常存储在服务器的内存中或者数据库中。
  • 当用户访问网站时,服务器会为每个用户创建一个唯一的会话标识符(Session ID),并将该标识符存储在 Cookie 中,发送给用户的浏览器。
  • 用户的请求会带着这个 Session ID,服务器据此可以识别用户,并根据之前存储在服务器上的相关信息来处理用户的请求。
  • Session 通常用于存储用户的登录状态、购物车内容等信息,它可以存储更多的数据并且相对更安全,因为信息存储在服务器上,用户无法直接修改。

2.2 ThreadLocal

ThreadLocal 是 Java 中的一个类,用于在多线程环境下维护线程局部变量。每个线程都有自己独立的 ThreadLocal 实例,可以通过该实例存储和获取线程本地的变量。这意味着同一个变量在不同线程中可以有不同的值,且各个线程之间互不干扰。

  • 线程隔离性:在多线程环境下,如果多个线程共享同一个变量,可能会出现竞态条件或线程安全性问题。使用 ThreadLocal 可以将变量与线程绑定,确保每个线程都有自己独立的变量副本,从而避免了线程之间的竞争和干扰。
  • 线程封闭性:有些数据是与线程紧密相关的,不应该被其他线程访问或修改。ThreadLocal 提供了一种简单的方式来实现线程封闭性,确保数据只能被创建它的线程访问。
  • 上下文传递:有些情况下,需要在同一个线程的不同方法或组件之间传递数据,而不希望通过方法参数或全局变量来实现。ThreadLocal 可以用来在同一个线程的不同执行上下文中传递数据,使得数据共享更加方便。

2.3 集群的session共享问题

多台Tomcat并不共享session存储空间,当请求切换到不同tomcat服务时导致数据丢失的问题.

session的替代方案应该满足:

  • 数据共享
  • 内存存储
  • key,value结构

2.4 基于Redis实现共享session登录

在这里插入图片描述
一般不适用手机号作为token

2.5 解决状态登录刷新

目前这个拦截器只对一些特定的界面生效,如果用户一直访问不被拦截的界面。则过一段时间之后就会过期,这是不符合预期的行为。
在这里插入图片描述

3. 问题汇总

3.1 Mac M2不能运行给的nginx.exe

自行下载nginx,

# 安装 nginx 
brew install nginx
# 查看 安装目录和配置文件的目录
brew info nginx

在这里插入图片描述
把资料的nginx-1.18.0.2里的html文件夹直接覆盖到 nginx的安装目录的HTML文件
把资料的Nginx-1.18.0.2里的conf文件夹里的nginx-conf文件 覆盖 你安装的nginx的配置文件里的nginx-conf文件
sudo nginx -s reload重启nginx 再去访问就成功了。
可能会报错:nginx: [error] open() "/opt/homebrew/var/run/nginx.pid" failed (2: No such file or directory)
报错的话按下面的改(指定配置文件):
sudo nginx -c /opt/homebrew/etc/nginx/nginx.conf
再次:sudo nginx -s reload重启nginx 再去访问就成功了。
在这里插入图片描述

3.2 登录成功后跳转回首页

这个是前端代码有问题,修改一下即可。
修改后login方法如下:
在这里插入图片描述
同时后端MvcConfig代码也存在问题,应该删除”user/me“,使其能够被拦截器拦截。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值