14、sso單點登陸

項羽齊發表於2018-03-26

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外掛

  1. 繼承父級專案 
  1. 新增依賴 
  1. 引入tomcat外掛 
  1. 外掛配置 

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配置檔案

  1. 修改SpringMVC配置檔案 
  1. 修改Spring配置檔案 
  1. 修改mybatis配置檔案
  1. 建立Mapper介面

說明:建立介面.定義namespace

 

登入操作

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.頁面效果

 

相關文章