• pringboot+mybatis+redis+cookie单点登录


    一、基本思路

           单点sso用于多系统分布式,当多个系统分布式部署后,当然需要统一的登录接口。sso应运而生。

      可以想见,单点应该是提供一个服务给其他系统,当其他系统需要验证登录状态的时候,调用服务,就可以确定用户的信息权限的状态。

      1、首要要定义一个接口用于每个系统,方便接收数据。

      2、应该遵循流程:

              登录-》查数据库 -》用户存在 -》生成唯一token -》将用户信息和token存入redis缓存存入cookie -》将用户信息打包成接口返回值 -》返回首页,或相应页面。

                     -》用户不存在 -》提示重新登录。

      3、需要写的类:

          1、一个接口返回值类:  应包含status状态,msg返回消息,data可能用到的数据。

          2、cookieUtil包:    cookie的常用方法。

          3、jsonUtil包:     json常用方法。

          4、serializeUtil:    序列化对象。

          5、Controller:    起码包含  login方法,logout方法,checkName检查用户名是否可用(供ajax调用)方法,getUserByToken方法(供其他系统调用检查登录状态)。

          6、service:      对应需求的业务实现方法。

          7、Dao:      login检查用户方法,checkName检查用户名是否可用。其他方法都用mybatis generate自动生成吧,很省事。

          8、model:    自动生成。

      4、大概的思路是这样,实际需求比较简单,没有难点,这里我大概说一下thymeleaf模板。

        当部署到tomcat以后访问地址会发生变化,在myeclipse中是http://ip:port/的方式,部署后会成为http://ip:port/项目名的方式。

        为了部署和调试的环境一样,方便部署,要在application.properties中添加一句“server.context-path=/sso/”,

        将来打包发布后生成sso.war包部署到tomcat的webapps中,就不会有问题了。

        这样添加后,thymeleaf模板的页面访问地址要加上

    /*<![CDATA[*/
                     var url = /*[[@{/user/check}]]*/"/user/check";
    /*]]>*/  
    <img th:src="@{/images/loginbanner.png}" />

        这样来获得地址的上下文。

  • 相关阅读:
    sql中的exists用法
    采用spring的schedule注解配置定时任务
    java通过传入的日期,获取所在周的周一至周日
    forever start app.js 启动node时,服务访问一次后第二次就不能访问了
    linux 安装nginx
    linux 常用命令
    8位字节表示的有符号数范围是-128~127
    极光推送免费版
    tomcat 设置连接数
    查看linux内存使用情况
  • 原文地址:https://www.cnblogs.com/PPBoy/p/7248597.html
Copyright © 2020-2023  润新知