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}" />

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

 

posted on 2017-07-28 09:50  PPBoy  阅读(1421)  评论(0编辑  收藏  举报

导航