redis 登录案例

news2024/11/17 1:41:58

下图就是登录controller

@Controller
public class LoginController {

    @RequestMapping("/login")
    public String Login(String username, String password, HttpServletResponse response){

        System.out.println(username);
        System.out.println(password);

    //判断账号密码  假数据
        if("mike".equals(username)&&"123".equals(password)){
        //从数据库里查出来的user信息
            User user = new User();
            user.setId(1);
            user.setName(username);
            user.setAge(20);
            user.setGender("男");
            user.setPassword("123");

            //转换user转换成JSON 字符串
            String value = JSON.toJSONString(user);

            RedisUtil.set(username,value);//将登录用户的信息存在redis中 key是用户名,value是登录对象

            //新建cookie 把用户名存进去
            Cookie cookie = new Cookie("LoginUser", username);

            response.addCookie(cookie);//将cookie从服务端发送给客户端浏览器保存
            return "ok";
        }else{

            return "redirect:/lg.html";

        }
        


    }

}

 

下图是登录拦截器  拦截index

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //查到所有cookie
        Cookie[] cookies = request.getCookies();
        boolean flag=true;
        //遍历cookie  如果有 LoginUser 的  cookie的key
        for (Cookie cookie : cookies) {
            if("LoginUser".equals(cookie.getName())){

                //获得这个cookie值,在redis里面查询
                String key = cookie.getValue();

                //通过username查询到 user类
                User user = RedisUtil.getUser(key);

                //如果有这个user类  说明登录过了
                if(user!=null){//已经登录过了
                    flag=false;
                    return true;

                }

            }
        }
        if (flag){//如果flag等于true   去登录页面

            response.sendRedirect("lg.html");
        }
            return false;
    }
}

 

 

 

 

下图是redis连接工具类

public class RedisUtil {

    public static void set(String key,String value){

        Jedis jedis = new Jedis("192.168.59.12",6379);

        jedis.set(key,value);

        jedis.close();

    }

    public static User getUser(String key){

        Jedis jedis = new Jedis("192.168.59.12", 6379);

        String s = jedis.get(key);

        return JSON.parseObject(s,User.class);


    }


}

 

 

逻辑是访问index先登录,登录的用户名存在cookie中,返回给客户端,登录的用户具体信息存在redis中。

docker中创建 loginDemo1  和loginDemo2

 

下图是docker-compose.yml 文件

 

下图是dockerflie文件目录

 

 Dockerflie文件如下

 如法炮制另一个loginDemo2  但是tomcat端口不一样  一个是8081 一个8082  

在nginx 配置数据卷文件中如下配置  

轮询

 重启nginx

这个时候访问就会在两台服务器一下一下挨着访问

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序 | IM交友聊天功能大汇总

📌个人主页:个人主页 ​🧀 推荐专栏:小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏!从个人到商业的全套开发教程,实打实的干货分享,确定不来看看? …

关系数据库系统中的 NULL 值及其用途

在数据库中,NULL值具有非常特殊的含义。因此,重要的是要理解NULL值不同于零值或包含空格的字段。在今天的博客中,我们将探讨 NULL 值的含义以及如何在 Navicat Premium 中使用NULL。 什么是NULL? 应该注意的是,NULL值…

Linux上部署Kubectl(k8s)

Linux上部署Kubectl(k8s) 1.k8s简介 1.1 Kubernetes 概念 在 k8s 上进行部署前,首先需要了解一个基本概念 Deployment Deployment 译名为 部署。在k8s中,通过发布 Deployment,可以创建应用程序 (docker image) 的实例 (docker container)…

跑步需要哪些运动装备?跑步爱好者者的装备推荐

一开始我认为跑步是不需要装备的,毕竟是基础运动,但问了一下身边的运动大神才明白在长期的跑步锻炼,特别是长跑的过程中好的装备不但可以保护你免受伤害,还能帮助你更好的掌握运动状态,进行合理的锻炼下面我就给大家列…

[附源码]java毕业设计网上书店的设计

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

vite+vue-router4.x配置动态路由

踩过的坑: import直接导入组件; router.addRoute 并不能一次性给你导入(即不是vue-router3.x以下的addRoutes); addRoute后页面空白; 直接上才艺! 我的设计思路是登录后获取token,并存入cookie…

bizlog通用操作日志组件(代码分析篇)

引言 在上篇博客中介绍了通用操作日志组件的使用方法,本篇博客将从源码出发,学习一下该组件是如何实现的。 代码结构 该组件主要是通过AOP拦截器实现的,整体上可分为四个模块:AOP模块、日志解析模块、日志保存模块、Starter模块…

企业小程序商城的推广方式有哪些_分享小程序商城的作用

其实搭建小程序商城比较容易,难的是后期的运营。要想办法进行引流,用户运营伙伴就给大家介绍一些引流推广的方法。 1、利用微信好友、微信群和朋友圈 可以让用户分享小程序给微信好友或微信群,这是吸引新用户的最快方法。除此之外&#xff0…

Kettle入门到实战

简介 Kettle是一个方便ETL(数据的抽取,装换,装载)开源框架。 官网 kettle下载、kettle源码下载 – Kettle中文网 百度网盘下载 链接:https://pan.baidu.com/s/1C-izMX_3KMkRb5hhdj66xg 提取码:yyds --来自百度网盘超级会员…

go radix tree

Radix Tree Search Insert Insert ‘water’ at the root Insert ‘slower’ while keeping ‘slow’ Insert ‘test’ which is a prefix of ‘tester’ Insert ‘team’ while splitting ‘test’ and creating a new edge label ‘st’ Insert ‘toast’ while splitti…

java 多线程()—— 线程同步=队列+锁

一、线程同步 队列 锁 同步就是多个线程同时访问一个资源。 那么如何实现? 队列锁。 想要访问同一资源的线程排成一个队列,按照排队的顺序访问。访问的时候加上一个锁(参考卫生巾排队锁门),访问完释放锁。 二、 不…

gitblit 搭建本地 git 仓库

目录 一、简介 二、准备工作 1.安装Java 2.下载gitblit 3.创建资料目录 三、修改配置 1.git.repositoriesFolder 2.server.httpPort 3.server.httpBindInterface 4.installService.cmd 四、gitblit图标显示异常 结束 一、简介 Gitblit是一个用于管理,查…

数据结构与算法这么重要还不会?字节内部笔记来帮你轻松拿下!

对任何专业技术人员来说,理解数据结构都非常重要。作为软件开发者,我们要能够用编程语言和数据结构来解决问题。编程语言和数据结构是这些问题解决方案中不可或缺的一部分。如果选择了不恰当的数据结构,可能会影响所写程序的性能。因此&#…

VKL076-19*4点 超低功耗抗干扰LCD液晶段码显示屏驱动控制电路(IC/芯片),超低工作电流约7.5微安,多用于仪器仪表类,可提供FAE技术支持

产品品牌:永嘉微电/VINKA 产品型号:VKL076 封装形式:SSOP28 概述: VKL076 SSOP28是一个点阵式存储映射的LCD驱动器,可支持最大76点(19SEGx4COM)的 LCD屏。单片机可通过I2C接口配置显示参数和…

【Hack The Box】linux练习-- SwagShop

HTB 学习笔记 【Hack The Box】linux练习-- SwagShop 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月17日🌴 &#x1…

Python 完美解决 Import “模块“ could not be resolved ...

vscode 中 python 提示警告错误,但是还是能跑起来代码: Import "playwright.sync_api" could not be resolved Pylance reportMissingImports 原因可能有两个: 1、未下载此包,打开命令行,输入 $ pip list&a…

problem B.Genshin Impact(2022合肥icpc)

题意&#xff1a;对目标持续施法&#xff0c;法术是每隔y秒让目标开始持续燃烧x秒&#xff0c;每次施法的概率是1/p 求燃烧时间比上总时间的期望值 &#xff08;题面是laji&#xff09; 思路&#xff1a;我们把总时间看成许多y段 当x<y的时候&#xff0c;只有一种情况就…

JVM虚拟机(整体架构、类文件结构)我来了~~~

虚拟机 1.1 发展历程 1.1.1 java往事 ​ Java诞生在一群懒惰、急躁而傲慢的程序天才之中。 ​ 1990年12月&#xff0c;Sun的工程师Patrick Naughton被当时糟糕的Sun C工具折磨的快疯了。他大声抱怨&#xff0c;并威胁要离开Sun转投当时在Steve Jobs领导之下的NeXT公司。领导…

CRGDFPASSC,CAS号:166184-23-2

CRGDFPASSC是一种含环rgd的十肽&#xff0c;与血小板表面的纤维蛋白原受体结合。在5号位置用Phe取代Ser的类似物作为血小板聚集抑制剂&#xff0c;其活性是CRGDSPASSC的3倍(IC₅₀ 2.5M)。 编号: 130659中文名称: CRGDFPASSC英文名: CRGDFPASSCCAS号: 166184-23-2单字母: CRGDF…

方法2—并行数据流转换为一种特殊串行数据流模块的设计,

并行数据流转换为一种特殊串行数据流模块的设计&#xff0c;设计两个可综合的电路模块1&#xff0c;第一个可综合模块&#xff0c;M1。2&#xff0c;描述M2模块3&#xff0c;描述M0模块的Verilog代码4&#xff0c;描述顶层模块5&#xff0c;电路生成的门级网表&#xff0c;netl…