zoukankan      html  css  js  c++  java
  • 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}" />

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

  • 相关阅读:
    关于http与https之间的区别
    成功解决react+webpack打包文件过大的问题(时间已久,不建议继续阅读)
    使用angularjs实现注册表单
    在jQuery中使用canvas时遇到的问题
    使用canvas实现绚丽的时钟特效
    HTML5中的DOM新特性
    JavaScript中DOM节点层次Text类型
    wx小程序 createRewardedVideoAd
    移动端项目构建 [笔记]
    wx 小程序 | textarea +
  • 原文地址:https://www.cnblogs.com/PPBoy/p/7248597.html
Copyright © 2011-2022 走看看