基于cookie和redis的单点登录

本文介绍了单点登录的实现思路,通过在用户登录时生成UUID存入cookie,并将其对应用户的JSON信息存储在Redis中。在子页面切换时,通过检查cookie和Redis中的信息来判断是否已登录,实现单点登录功能。详细步骤包括注册、登录及跳转子页面时的拦截器配置。
摘要由CSDN通过智能技术生成

单点登陆实现思想:

  1. 用户登录时,随机生成一个uuid,当成 Value 存到客户端cookie里,再将uuid作为Key,把去掉敏感信息(密码,电话,邮箱等)的用户对象转换成的 json串当作value,存进redis里,为以后校验用

  2. 当用户在子页面之间进行切换时,先拿到页面的cookie,再从redis里查询cookie是否存在,不存在就重定向到登陆界面,存在则正常执行程序,实现单点登录

1-注册

1. 校验用户名、手机号、邮箱等在这里插入图片描述

$.ajax({
   
            	url : "http://sso.jt.com/user/check/"+escape(pin)+"/1?r=" + Math.random(),
            	dataType : "jsonp",
            	success : function(data) {
   
                    checkpin = data.data?"1":"0";
                    if (data.status == 200){
   
                        if (!data.data) {
   
                            validateSettings.succeed.run(option);
                            namestate = true;
                        }else {
   
                            validateSettings.error.run(option, "该用户名已占用!");
                            namestate = false;
                        }
                    }else {
   
                        validateSettings.error.run(option, "服务器正忙,请稍候!");
                        namestate = false;
                    }

                }
            });
    /**   
    
     * 需求:实现用户信息校验
     * 校验步骤:  需要接收用户的请求,之后利用RestFul获取数据,
     *            实现数据库校验,按照JSONP的方式返回数据.
     * url地址:   http://sso.jt.com/user/check/admin123/1?r=0.8&callback=jsonp16
     * 参数:      restFul方式获取
     * 返回值:    JSONPObject
     */                                     //============注册校验用户名、手机号============//
    @RequestMapping("/check/{param}/{type}")//http://sso.jt.com/user/check/admin123/1?r=0.014981746295906095&callback=jsonp1607342205428&_=1607342388059
    public JSONPObject checkUser(@PathVariable String param,//admin123
                                 @PathVariable Integer type,//1
                                 String callback){
   
        //只需要校验数据库中是否有结果
        boolean flag = userService.checkUser(param,type);  //  flag = true/false
        SysResult sysResult = SysResult.success(flag);
                    //跨域请求返回 JSONPObject 对象
        return new JSONPObject(callback, sysResult);
    }
    //**************jt-sso*********************
boolean checkUser(String param, Integer type);
//**************jt-sso*********************
 /**
     *  校验数据库中是否有数据....
     *  Sql: select count(*) from tb_user where username="admin123";
     *  要求:返回数据true用户已存在,false用户不存在
     */
    @Override
    public boolean checkUser(String param, Integer type) {
   
        String column = paramMap.get(type);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq(column,param);
        int count = userMapper.selectCount(queryWrapper);
        return count
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值