SpringCloud工作笔记072---同一浏览器上不同标签页_tab页或者同一浏览器新开一个浏览器窗口也能实现单点登录_单点登录_localStorage_sessionStorage

    JAVA技术交流QQ群:170933152  

 

注意用localStorage,存的token不会失效,可以在关闭浏览器的时候,清除或者设置一下过期时间,怎么做可以百度

 

注意:sessionStorage:是在单个浏览器标签上是生效的,但是再开一个新的标签就不行了

localStorage:可以在同一浏览器上生效,只要是不清理缓存就行

----------------

至于说的单点登录,其实不是,session 也是这样的吧,之前在系统中实现的时候用的sessionStorage,导致新开一个标签页,就获取不到在sessionStorage中存的数据了

---之前是这样做的:

首先我们在前端有个工具类:可以看到里面都是用的localStorage的了,之前用的是sessionStorage

---登录的时候我是这样处理的:

  var username = $("input#users").val();
         var password = $("input#pass").val();
         var systype = dic.getByDictId("SYS_TYPE", "数据字典系统id").code;

         // var logindata = {username:username,password:password};
         var logindata = {};
         logindata.username = username;
         logindata.password = password;
         logindata.systype = systype;

         if (username == "" || password == "") {
             constant.dialog.alertInfo("信息填写不完整");
         } else {
             $.ajax({
                 url: constant.url.sc_auth.login,
                 data: logindata,
                 type: "POST",
                 success: function (data, status, response) {
                     if (data.code=="406"){
                         constant.dialog.alertInfo("用户名或密码错误");
}else if(data.code=="403"){
                         constant.dialog.alertInfo("用户名或密码错误");
}else if(data.code=="402"){
                         constant.dialog.alertInfo("该用户没有权限登录此系统");
}else if(data.code=="405"){
                         constant.dialog.alertInfo("错误的系统");
                     }else if(data.code=="401"){
                         constant.dialog.alertInfo("请求超时");
                     }else if(data.code=="411"){
                         constant.dialog.alertInfo("登录失败,未知错误");
                     }else{
                         swal({
                             title: '登录成功,为您跳转到工作页面',
      type:'success',
                             text: '',
                             timer: 1000
                         }).then(
                             function () {
                                 var receivedata=data;
                                 var token=receivedata.message;
                                 constant.setToken(receivedata.message);
//这里把获取的数据都放到缓存中去,这里是放到localStorage中,这样就能实现单点了,也就是一个浏览器窗口登录,同一个浏览器
//旁边再打开一个tab页也可以,同时也测试了,同一个浏览器再开一个窗口也行,哈哈
                                 util.setCash("token",receivedata.message);
                                 util.setCash("loginuser",receivedata.data);
                                 constant.setToken(token);
                                 //constant.dialog.alertSuccess("登录成功!");
                                 window.location.href = "main.html";
                             },
                             function (dismiss) {
                                 if (dismiss === 'timer') {
                                     console.log('I was closed by the timer')
                                 }
                             }
                         )
}
                 },
                 error: function (xhr, textStatus, errorThrown) {
                     constant.dialog.alertError("登录失败");
                 }
             });
         }
     }
//工具类 @201809181833
var util = function () {
    return {
        setCash: function (name, value) {
            if (util.isNull(value))
                return;
            if (!util.isString(value))
                value = util.fromJson(value);
            value = util.trim(value);
            localStorage.setItem(name, value);
        },
        getCash: function (name) {
            var value = localStorage.getItem(name);
            if (util.isNull(value))
                return null;
            if (value.length > 1
                && (value[0] == '{' || value[0] == '[')
                && (value[value.length - 1] == '}' || value[value.length - 1] == ']'))
                value = JSON.parse(value);
            return value;
        },
        removeCash: function (name) {
            localStorage.removeItem(name);
        }
    }
}();

你可能感兴趣的:(WebFront,Spring,Cloud)