1.2 SSO(單點登入系統)
1.2.1 架構設計
說明:採用SSO單點登入系統後需要做如些的配置
1.當使用者進行登入操作時,訪問的是單點登入系統
2.當單點登入系統接收使用者的請求時,根據使用者名稱和密碼判斷是否有效,如果有效則返回給客戶端ticket加密資訊.並且將ticket:userJSON資料儲存到redis中,方便其他系統獲取資訊.
3.當前端系統獲取ticket後將資訊儲存到cookie中.方便獲取.
1.2.2 圖解單點登入
說明:
自行將圖上的資訊補全.
1.當使用者登陸時,前臺系統訪問登陸系統進行登入操作
2.根據使用者名稱和密碼進行登入之後返回給客戶端ticket.將使用者資訊寫入redis快取中
3.客戶端將ticket儲存到cookie中
1.3 建立單點登入系統
1.3.1 選擇骨架建立專案
1.3.2 新增tomcat外掛
- 繼承父級專案
- 新增依賴
- 引入tomcat外掛
- 外掛配置
1.3.3 配置nginx
說明:當使用者訪問sso.jt.com轉向該伺服器.修改完成後重啟nginx
#京淘單點登入系統
server {
listen 80;
server_name sso.jt.com;
#頁面轉向 轉向的是一個具體的url
location / {
proxy_pass http://localhost:8093;
}
}
1.3.4 修改hosts檔案
# 京淘電商環境
127.0.0.1 image.jt.com
127.0.0.1 manage.jt.com
127.0.0.1 www.jt.com
127.0.0.1 sso.jt.com
127.0.0.1 cart.jt.com
127.0.0.1 order.jt.com
127.0.0.1 solr.jt.com
1.4 修改配置檔案
1.4.1 拷貝配置檔案
1.4.2 匯入web.xml配置檔案
1.4.3 修改Spring配置檔案
- 修改SpringMVC配置檔案
- 修改Spring配置檔案
- 修改mybatis配置檔案
- 建立Mapper介面
說明:建立介面.定義namespace
2 登入操作
2.1 轉向登入和註冊頁面
2.1.1 轉向頁面
2.2 使用者註冊校驗
2.2.1 頁面分析
2.2.2 介面文件定義-註冊
2.2.3 編輯pojo物件
package com.jt.sso.pojo;
2.2.4 編輯Controller
2.2.5 編輯Service
2.2.6 定義Mapper
2.3 使用者註冊
2.3.1 頁面分析
說明:根據瀏覽器獲取url
說明:查詢頁面的js.查詢返回值結果
說明:查詢程式碼的方法
通過EverEdit工具實現程式碼查詢
2.3.2 編輯Controller
2.3.3 編輯Service
2.3.4 編輯SSOController
說明:包路徑: package com.jt.sso.controller;
@RequestMapping("/register")
@ResponseBody
public SysResult saveUser(User user){
try {
String username = userService.saveUser(user);
return SysResult.oK(username);
} catch (Exception e) {
e.printStackTrace();
return SysResult.build(201, "新增使用者失敗");
}
}
2.3.5 編輯後端Service
說明: package com.jt.sso.service
@Override
public String saveUser(User user) {
//為User資訊補全資料
user.setPassword(DigestUtils.md5Hex(user.getPassword())); //將密碼加密
user.setEmail(user.getPhone()); //用電話號碼代替郵箱
user.setCreated(new Date()); //設定時間
user.setUpdated(user.getCreated());
//將user進行入庫操作
userMapper.insert(user);
//將使用者名稱返回
return user.getUsername();
}
2.4 使用者登陸
2.4.1 頁面分析
2.4.2 編輯前臺的Controller
2.4.3 編輯前臺service
說明:進行使用者登陸 跨域訪問
包路徑: package com.jt.web.service;
/**
* 1.定位目標uri
* 2.準備資料
* 3.發出請求
* 4.解析資料
* 5.返回資料
*/
@Override
public String findUserByUP(User user) {
String uri = "http://sso.jt.com/user/login";
Map<String, String> map = new HashMap<String,String>();
map.put("u", user.getUsername());
map.put("p", user.getPassword());
try {
String resultJSON =
httpClientService.doPost(uri, map);
SysResult sysResult =
objectMapper.readValue(resultJSON, SysResult.class);
//獲取服務端資料
String ticket = (String) sysResult.getData();
return ticket;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
2.4.4 編輯後臺Controller
2.4.5 編輯Service
2.4.6 編輯Mapper介面
1.編輯介面檔案
public interface UserMapper extends SysMapper<User>{
//根據列名和引數查詢記錄總數
int findCheckUser
(@Param("cloumn")String cloumn,@Param("param")String param);
//根據使用者名稱和密碼查詢使用者資訊
User findUserByUP(@Param("username")String username,
@Param("password")String password);
}
2.編輯配置檔案
2.4.7 作業:
完成根據ticket回顯使用者資訊
Js呼叫:
2.頁面效果