单点登陆
单点登陆github
github:https://github.com/Handoking/Single-Sign-on
单点登陆的原理
客户端一拦截器
认证中心代码
这里并没有使用数据库,仅仅是使用了数据结构保存了session。同时只是为了实现两个客户端的登陆,所以直接验证了用户名和密码。
数据结构类UserDB.class
package com.handoking.db;
import com.handoking.pojo.ClientInfoVo;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
/**
* @ClassName UserDB
* @Description TODO
* @Author Handoking
* @Date 2019/12/27 10:00
**/
public class UserDB {
public static HashSet<String> tokenSet = new HashSet<>();
/**
* 用户登出地址和sessionid。map中key为token,值为多个客户端的登出地址和sessionid组成的列表,比如天猫,淘宝等
*/
public static Map<String,List<ClientInfoVo>> clientInfo=
new HashMap<>();
}
完成登陆、验证登陆、验证令牌,注销登陆。
package com.handoking.controller;
import com.handoking.db.UserDB;
import com.handoking.pojo.ClientInfoVo;
import org.springframework.ui.Model