package DemosTTTest;
/**
* @master: Allen
* @Dates: 2021/10/9 20:06
*/
import redis.clients.jedis.Jedis;
import java.util.UUID;
/**
* 单点登录应用实践
*/
public class SSOA {
//准备一个静态资源
static String localtoken;
//访问资源服务器方法
static void doGetResource(){
//1.检查token是否存在,(token是存储在客户端-Cookie,localStorage)
if (localtoken==null){
System.out.println("请登录!!!");
return;
}
//2.检查token是否已经失效
Jedis jedis = new Jedis("192.168.126.129",6379);//redis数据库连接
String IDtoken = jedis.get(localtoken);//拿到token去redis里面查找
jedis.close();
//判断token
if (IDtoken==null){
System.out.println("登录超时或令牌无效!!!");
return;
}
//3.返回你要访问的资源
System.out.println("恭喜你,拿到了你想要的资源了!!!");
}
//单点登录的方法\
static void dologin(String username,String password){
if("Allen".equals(username) && "123456".equals(password)){
System.out.println("登录成功!!!得到令牌");
//设置uuid
String newtoken = UUID.randomUUID().toString();
Jedis jedis = new Jedis("192.168.126.129",6379);//redis数据库连接
jedis.set(newtoken,username);//存储用户信息
jedis.expire(newtoken,1);
jedis.close();
//将token存储到客户端
SSOA.localtoken = newtoken;// 本地token || 生成的token
}
}
public static void main(String[] args) throws InterruptedException {
//1.访问资源
//doGetResource();
//2.执行登录操作
dologin("Allen", "123456");
//3.再次访问资源
Thread.sleep(1000);
doGetResource();
}
}
redis模拟了一下简单的单点登录功能
最新推荐文章于 2023-08-02 17:08:54 发布