• redis 登录案例


    下图就是登录controller

    1. @Controller
    2. public class LoginController {
    3. @RequestMapping("/login")
    4. public String Login(String username, String password, HttpServletResponse response){
    5. System.out.println(username);
    6. System.out.println(password);
    7. //判断账号密码 假数据
    8. if("mike".equals(username)&&"123".equals(password)){
    9. //从数据库里查出来的user信息
    10. User user = new User();
    11. user.setId(1);
    12. user.setName(username);
    13. user.setAge(20);
    14. user.setGender("男");
    15. user.setPassword("123");
    16. //转换user转换成JSON 字符串
    17. String value = JSON.toJSONString(user);
    18. RedisUtil.set(username,value);//将登录用户的信息存在redis中 key是用户名,value是登录对象
    19. //新建cookie 把用户名存进去
    20. Cookie cookie = new Cookie("LoginUser", username);
    21. response.addCookie(cookie);//将cookie从服务端发送给客户端浏览器保存
    22. return "ok";
    23. }else{
    24. return "redirect:/lg.html";
    25. }
    26. }
    27. }

     

    下图是登录拦截器  拦截index

    1. public class LoginInterceptor implements HandlerInterceptor {
    2. @Override
    3. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    4. //查到所有cookie
    5. Cookie[] cookies = request.getCookies();
    6. boolean flag=true;
    7. //遍历cookie 如果有 LoginUser 的 cookie的key
    8. for (Cookie cookie : cookies) {
    9. if("LoginUser".equals(cookie.getName())){
    10. //获得这个cookie值,在redis里面查询
    11. String key = cookie.getValue();
    12. //通过username查询到 user类
    13. User user = RedisUtil.getUser(key);
    14. //如果有这个user类 说明登录过了
    15. if(user!=null){//已经登录过了
    16. flag=false;
    17. return true;
    18. }
    19. }
    20. }
    21. if (flag){//如果flag等于true 去登录页面
    22. response.sendRedirect("lg.html");
    23. }
    24. return false;
    25. }
    26. }

     

     

     

     

    下图是redis连接工具类

    1. public class RedisUtil {
    2. public static void set(String key,String value){
    3. Jedis jedis = new Jedis("192.168.59.12",6379);
    4. jedis.set(key,value);
    5. jedis.close();
    6. }
    7. public static User getUser(String key){
    8. Jedis jedis = new Jedis("192.168.59.12", 6379);
    9. String s = jedis.get(key);
    10. return JSON.parseObject(s,User.class);
    11. }
    12. }

     

     

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

    docker中创建 loginDemo1  和loginDemo2

     

    下图是docker-compose.yml 文件

     

    下图是dockerflie文件目录

     

     Dockerflie文件如下

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

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

    轮询

     重启nginx

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

     

     

  • 相关阅读:
    使用verilog语言实现简单的卷积神经网络
    你的工具包已到货「GitHub 热点速览 v.22.31」
    【dc-dc】AP5186 三功能 LED 降压型恒流芯片 手电筒 LED芯片
    2024年04月IDE流行度最新排名
    一种在行末隐藏有效载荷的新供应链攻击技术研判
    【周末读书】认知驱动:做成一件对他人很有用的事
    Redis的介绍以及简单使用
    自然语言处理(NLP)—— 主题建模
    Android handlerThread并发了解
    前端三剑客 - JavaScript
  • 原文地址:https://blog.csdn.net/weixin_60934893/article/details/127956245