redis模拟了一下简单的单点登录功能

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();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值