localStorage也可以限时保存登录信息

localStorage用于持久化的存储;但是我想限时保存用户的登录信息,除了cookie和session,localStorage应该也可以做到;cookie字符长度有限制,不够6;session在后端保存;现在我要在前端保存用户信息,而不用每次后台判断或前端请求去判断;因为如果页面由前端输出,那么每次都得请求一次用户是否登录;

代码不多,大家都懂:

  
1module.exports={
2    age:0,
3    maxAge:function (age) {
4        this.age=age;
5        return this;
6    },
7    set:function(name,json){
8        localStorage.removeItem(name);
9        json.__time=new Date().getTime();
10        json.__age=this.age;
11        localStorage.setItem(name,JSON.stringify(json));
12        return this;
13    },
14    getInfo:function(name){
15        var info=localStorage.getItem(name);
16        return info?JSON.parse(info):null;
17    },
18    isExpired:function(name) {
19        var logined=localStorage.getItem(name),
20            _time=0,
21            iTime=new Date().getTime(),
22            timeLength=0;
23        if (logined) {
24            logined=JSON.parse(logined);
25            _time=logined.__time;
26            timeLength=iTime-_time;
27            return timeLength>=logined.__age;
28        }else {
29            return true;
30        }
31    },
32    isLogined:function(name,fn) {
33        var user='',age=this.age;
34        if (!this.isExpired(name)) {
35            user=JSON.parse(localStorage.getItem(name));
36        }else{
37            localStorage.removeItem(name);
38        }
39        if (user) {
40            fn&&fn(user);
41        }else {
42            fn&&fn();
43        }
44    }
45};
  

使用:

  
1var store=require('./modules/store');
  

前端在用户登录成功后保存基本信息:

  
1store.maxAge(1000*60*60*24).set('userinfo',{
2     name:'hf',
3     age:'18'
4 });
  

以JSON格式保存用户的信息name和age,字段名userinfo,保存时长为一天;

下次用户访问判断用户信息是否过期:

  
1store.isExpired('userinfo');
2//返回true|false
  

或者直接判断限定时间内是否登录了:

  
1store.isLogined('userinfo',function(info){
2         if (info) {
3             console.log(info)
4         }else {
5             console.log(false)
6         }
7     });
8//若在限定时间内登录了,回调用户信息;若没有登录,回调里做其他操作
  

获取登录信息,返回用户信息或null;也可以判断是否登录;

  
1store.getInfo('userinfo');
2//返回info或null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值