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

    這樣來獲得地址的上下文。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM