前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信公众号页面有效期访问设置

微信公众号页面有效期访问设置

作者头像
博文视点Broadview
发布2020-06-11 17:14:05
9670
发布2020-06-11 17:14:05
举报

小编说:页面有效期访问,主要实现成员在进入页面后仅能在一段时间内进行操作,对于超过规定时间的成员将禁止操作。用于防止成员信息泄露或超时处理等。 本文选自《微信企业号开发完全自学手册》

页面有效期访问分为前台JS校验和后台时间校验,前台校验能够解决业务上的效果实现,而后台校验主要用于防止系统漏洞,增加系统安全性,应用场景如下:

场景一,成员薪资水平对于公司来说较为保密,减少员工之间不必要的薪资泄露是企业稳定的重要因素。因此当企业号作为企业服务,在引入人力资源系统时,薪资的页面查询,需要具有一定的时效性。当成员不慎未关闭页面时,为防止其他成员查看,可以在JS中加入时间控制,减少薪资等信息的泄露。

场景二,微信考勤打卡可以防止员工早退并提前打开考勤页面的情况下,回家进行微信考勤的漏洞。

场景三,在成员考勤补签、业务签收归档时,如果采用前台时间校验,则成员可以通过修改手机时间来实现信息的“逾期”处理或“预”处理,这时可以通过增加后台有效时间校验解决此类问题。

备注:建议在进行数据库操作时,同时使用JS校验和后台校验,这样方能够在实现客户体验的同时增加系统的安全性。

  • JS定时任务校验

JS定时任务是前台有效期校验的一种方式,当成员在当前页面访问超时的时候,将进行安全跳转。其实现方式多种多样,既可以通过setTimeout实现,也可以通过setInterval实现,示例代码如下:

代码语言:javascript
复制
<html>
<head>
   <title> JS定时任务校验</title>
</head>
<body>
   倒计时:<span id="curTime"></span><br/>
   基本工资:100000.00<br/>
   绩效工资:50000.00<br/>
   浮动工资:50000.00<br/>
   &nbsp;&nbsp;总计:100000.00<br/>
<body>
<script>
       var flag=60;
       function timedCount(){
            if(flag<0){ 
                //超过有效事,页面跳转
               location.href="http://www.baidu.com";
           }else{
                document.getElementById('curTime').innerHTML=flag;
               flag--;
               setTimeout("timedCount()",100);
           }
       } 
        //页面初始化执行
       timedCount();
    </script>
</html>

备注:setInterval() 方法是不停地调用函数,直到 clearInterval() 被调用或窗口被关闭,而setTimeout()是一定时间后执行“一次”函数。

  • 事件校验

事件校验,分为JS事件时间校验和后台session时间校验。当前台点击某个按钮时,能够通过JS获取本机时间进行校验。为了防止成员修改本机时间创建程序漏洞,因而增加后台时间校验,通过校验服务器时间来增加系统的安全性。

1 JS校验时间

当员工进行微信考勤,点击“考勤打卡”时,可校验员工是否长时间保持当前页面定位。如果超过有效时间,则需要员工重新获取定位后,方可以进行考勤。示例代码如下:

代码语言:javascript
复制
<html>
<head>
   <title>JS时间校验</title>
</head>
<body>
   当前GPS位置:<span id="curTime"></span><br/>
   经度:101.60156187500003<br/>
   纬度:35.603717439502084<br/>
   <div onclick="regesiter()" style="background-color:red;width:100px">考勤打卡</div>
<body>
<script>
       var flag=60;  //有效值,单位秒
       var beginTime=new Date();//初始化开始时间
       function regesiter(){
          /获取单击事件的当前时间
           var endTime=new Date();
           var temp=endTime.getTime()-beginTime.getTime();
           if(temp>flag*1000){
               alert("页面超时失效,需要重新刷新,是否刷新?");
               return ;
           }else{
               //继续运行
               alert("继续运行");
           }
       }
       </script>
</html>

2 后台时间校验

后台校验主要用于防止成员通过修改本机时间,从而跳过JS时间验证的问题。在页面初始化时存入当前时间,示例代码如下:

代码语言:javascript
复制
request.getSession().setAttribute("bgTime", new Date());

当点击“考勤打卡”后,通过JS校验进入后台进行时间校验,示例代码如下:

代码语言:javascript
复制
long interval=60L;//阈值
Date bgTime = (Date) request.getSession().getAttribute("bgTime");
Date edTime = new Date();
if((edTime.getTime()-bgTime.getTime())>interval*1000L){
    //重新设置,session
   PrintWriter out = response.getWriter();
    out.print("页面超时");
    out.flush();
    out.close();
}

备注:后台增加时间校验后,还需要进行JS校验是为了减少服务端压力。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档