單點登錄用戶註冊–Service層
首先我們還是看關於單點登錄手冊中關於註冊的說明,如下圖所示。請求方式是POST類型,URL爲我們明確指定好了,參數有四個,需要校驗完合法性之後再提交。
下面我們先在taotao-sso-interface工程添加註冊接口,
下面實現接口, UserServiceImpl.java類所有代碼
單點登錄用戶註冊Controller層實現及測試
上節課我們一起學習了用戶註冊Service層的實現,這節課我們實現Controller層並且測試接口是否好用。
在taotao-sso-web工程的UserController類添加如下圖所示標註的代碼。
添加的代碼如下(GET請求不需要在RequestMapping中指定,但是POST就需要指定):
現在我們來測試下這個接口是否好使,由於我們修改過taotao-sso-interface和taotao-sso-service,因此我們重新把taotao-sso進行打包到本地Maven倉庫。
下面我們啓動taotao-sso工程以及taotao-sso-web工程,啓動好之後,我們使用測試工具來測試POST請求(地址欄是不能模擬POST請求的),POST請求是要帶參數的,參數的名稱必須與下圖tb_user表中圈住的四個字段一樣。
測試工具:postman
我們在URL一欄輸入http://localhost:8088/user/register,類型選擇POST
我們點擊"Body"一欄,點擊下拉框會出現下拉菜單讓我選擇,我們選擇"String body"。選擇String body後如下圖所示,默認的content-type是"text/plain",我們要把它改成表單類型。 我們按照如下圖所示更改content-type類型
下面我們添加參數,如下圖所示,添加四個參數。
下面發送請求,如下圖所示,可以看到返回的提示是用戶名重複了。
其實我們輸入的四個參數都是在數據庫中存在的,除了密碼,其它三個都會報不能重複的錯誤,要想不報錯,我們要把用戶名、電話、郵箱三個個參數都修改下,改成數據庫中不存在的數據。如下圖所示。可以看到返回的狀態碼是200,說明成功了。
我們可以到數據庫查看一下,發現數據庫中已經有新註冊用戶的信息了。
單點登錄用戶登錄流程分析及用戶登錄Service層
我們先來看下登錄流程圖,如下圖所示。
用戶登錄涉及到三個部分,第一部分是淘淘商城前臺工程,第二部分是單點登錄服務,第三部分是Redis服務。具體流程下圖已經說的很明白了,我就不再囉嗦一遍了,相比於傳統的登錄,我們沒有把用戶登錄信息存在session當中,而是存放到了Redis當中。
下面我們來實現服務端登錄業務
首先是在UserService接口類中添加登錄接口
下面我們到UserServiceImpl類來實現添加的登錄接口
login接口中用到了配置文件
這樣我們的Service層代碼便寫完了。
單點登錄用戶登錄–Controller層及測試
我們需要把token保存到cookie當中,爲了方便的操作cookie,我們特意封裝了一個工具類,由於該工具類有可能被多個服務使用,因此我們最好把該工具類放到utils。
可以看到當前引入是有錯誤的,要解決這個問題就要在taotao-common工程添加對servlet-api的依賴,添加完依賴之後CookieUtils.java就不報錯了
下面我們在UserController類添加login接口
login接口中用到了配置文件,配置文件
下面我們來測試,由於在taotao-common中添加了工具類,因此需要重新打包taotao-common工程到本地maven倉庫,由於在taotao-sso-interface添加了接口,因此我們需要把taotao-sso工程重新打包到本地maven倉庫。
在啓動工程前要保證zookeeper和redis服務器處於啓動狀態!!!
redis服務器的IP及端口要與jedis配置文件一致
打包完後,我們啓動taotao-sso工程和taotao-sso-web工程,啓動之後,我們還是使用RestClient3.5來測試。我們修改下URL地址將/user/register修改爲/user/login,然後點擊下面那個圈住的圖標。
點擊執行按鈕,可以看到返回的結果狀態碼是200,data中存放的是token的值。說明登錄成功了,同時也說明我們的登錄接口正確。
登錄成功了,我們利用redis-desktop-manager工具來查看token是否已經被保存起來了