`

关于如何防止重复签到的技术探讨

 
阅读更多

    

    问题:

    最近工作中遇到一个签到的问题,其实说来这并不是一个高并发的问题,也并不是CSRF伪造请求的问题,但是跟这两点有点类似,总结来说是针对用户防止短时间内重复刷请求的问题啦,根本原因其实是单用户的并发问题,那么如何实现呢?

 

   解答: 

   思路一,CSRF问题我们怎么解决呢,一般是用时间戳,Appkey,AppSecret来生成token,过了预定的时间这个请求就不能用了。如果这种策略用在解决这个问题上肯定是行不通的,因为一般的时间戳过期时间肯定是以分钟为单位的,而签到一般是秒级单位的,一秒内可以生成多次签到请求。

 

   思路二,搞一个ConcurrentHashMap,来控制用户的访问。但是有多个节点啊,内存的同步首先就是个问题,。

   

 Object signObj = concurrentHashMap.get("username");
 if(null == signObj) {
     signObj = concurrentHashMap.putIfAbsent("username", new Object());
         if(null != signObj) {
             doSign();
             concurrentHashMap.remove("username");
         }
 }

 

   思路三,目前的实现是Cache来实现的,思路其实差不多,可能cache会快一点点和设置超时时间吧。

   

//防止重复处理, 如果有数据返回false
//即使失败了,一分钟内也不能再重试请求了
boolean succ = setCacheDataIfNotExist(accountId + 
                      "-" + sourceType, accountId + "|" + sourceType, 60 * 1000);
if(!succ){
   LogConstant.runLog.info("User sign repeatly! accountId : " + accountId + " ip : " + ip + " sourceType: " + sourceType);
   return -1;
}
dosign();

 

 

 

 

 

分享到:
评论

相关推荐

    签到代码,签到功能

    服务器端的代码(通常使用Java、Python、Node.js等语言)需要处理这些请求,验证用户的合法性,检查签到的时间窗口是否开启,以及防止重复签到。 3. **数据库交互**:签到信息需要存储在数据库中,以便后续的查询和...

    php签到系统

    2. IP限制:为了防止同一用户通过多个设备或网络环境重复签到,系统会记录每次签到的IP地址。如果检测到相同IP在规定时间内重复签到,系统将自动阻止,有效防止刷签到的行为。 3. 天数限制:签到系统还可以设置每日...

    日历panel上的每日签到功能

    ### 日历 Panel 上的每日签到功能实现 ...通过结合前端和后端的技术,我们实现了用户签到的功能,并且能够防止用户重复签到。此外,这个功能还具有一定的扩展性,可以根据需要添加更多的功能,如连续签到奖励等。

    基于微信小程序的签到系统设计与实现.docx

    - **异常检测**:通过对用户行为的监测,识别并阻止异常签到行为,如重复签到、非授权签到等。 - **权限控制**:不同角色的用户拥有不同的权限,如教师可以创建签到活动,学生只能参与签到。 - **数据加密与传输安全...

    基于微信小程序的签到系统

    在签到系统中,云函数可以用于处理用户的签到数据存储、验证用户身份、防止重复签到等功能。 2. **云函数主体(Miniprogram)** “主体”在这里指的是微信小程序本身,它是基于微信小程序框架编写的前端应用部分。...

    android 每日签到Demo

    下面我们将深入探讨这个Demo涉及到的关键技术和知识点。 1. **本地数据库**:在Android中,SQLite是内置的轻量级数据库,常用于存储应用的结构化数据。在这个Demo中,SQLite被用来存储用户的签到记录,包括签到日期...

    address(uni-app经纬度定位范围内签到)

    同时,还可以通过后台服务存储签到记录,防止用户重复签到。 综上所述,实现“uni-app经纬度定位范围内签到”涉及定位接口的调用、位置计算以及用户体验的优化。通过合理的编程和设计,我们可以创建出高效、准确且...

    自动填写签到时间 .rar

    描述中的重复内容进一步强调了这一点,暗示该工具是为了解决日常签到时手动输入时间的繁琐问题。 标签“Registration VBA”提示我们,这个自动化可能是通过VBA(Visual Basic for Applications)实现的。VBA是一种...

    手机移动端日历模板,签到日历

    本文将深入探讨“手机移动端日历模板,签到日历”这一主题,解析其核心功能和实现机制。 首先,移动端日历模板是专为智能手机和平板电脑设计的,通常具有直观的用户界面,方便用户快速查看日期、添加事件和进行签到...

    各班签到表.zip

    在这里,我们主要探讨与文件压缩、签到管理以及可能涉及的数据处理相关的知识点。 1. 文件压缩技术: - ZIP格式:《各班签到表.zip》采用的是ZIP压缩格式,这是一种广泛使用的文件压缩标准,可以将多个文件打包并...

    基于ssm微信小程序的学生签到系统源码数据库文档.zip

    8. **安全考虑**:在设计签到系统时,应考虑到安全性问题,如防止重复签到、数据篡改等。可能需要使用验证码、Token验证等技术确保数据的安全性。 9. **用户体验**:微信小程序的界面设计应当简洁易用,确保学生...

    微信小程序精选源码亲测可用_蝌蚪签到.rar

    - **签到逻辑**:通常包括日期判断,防止重复签到,以及连续签到天数统计和奖励机制。 - **数据库交互**:使用微信小程序的云数据库或自建后端服务存储用户的签到记录。 - **UI设计**:展示签到状态,如签到按钮...

    MyCanlendar.rar

    在设计和实现签到功能时,还需考虑安全性,例如防止重复签到、保护用户隐私、以及防止SQL注入等安全风险。此外,良好的用户体验也是关键,比如提供清晰的UI设计、流畅的动画效果和友好的错误提示。 最后,考虑到...

    京东自动签到,浇水等薅羊毛脚本.zip

    在IT行业中,自动化脚本是提高效率和节省时间的有效工具,尤其在处理日常重复任务时。这个名为"京东自动签到,浇水等薅羊毛脚本.zip"的压缩包文件,显然是为京东用户设计的,目的是帮助他们自动化完成京东平台上的...

    Fencein:击剑比赛签到应用程序

    2. 数据验证与处理:在选手签到过程中,JavaScript可以对输入数据进行验证,确保信息的准确性和完整性,如检查姓名、编号是否有效,防止重复签到等。 3. 实时通信:通过使用Ajax技术,JavaScript可以实现在不刷新...

    CalenderDemo

    开发者需要实现检查机制,防止重复签到。 - **日期计算**:为了展示用户连续签到的天数或者统计每月签到次数,需要进行日期运算,例如计算两个日期之间的差值。 3. **用户界面(UI)** - **Material Design**:...

    2017年浙江省普通高校招生选考科目信息技术考试模拟卷11.pdf

    指纹签到是生物识别技术的一种,属于人工智能领域;语音聊天则涉及语音识别技术。试题中的第4题提到的数码相机自动侦测人脸并设置为主体,这属于面部识别技术,是光学识别技术的一个分支。 最后,试题还考察了...

    JS脚本实现定时到网站上签到/签退功能

    本文主要探讨如何使用JS脚本实现定时签到和签退功能,这对于需要自动化处理这类任务的用户来说非常有用。通过分析网页结构,我们可以编写代码来模拟点击按钮等操作。 首先,实现定时功能的核心是设置定时器。在JS中...

    基于实验成绩评定分析的实验教学改革探讨.docx

    2. **修订实验成绩评定方案**:将成绩评定细化,不再只看重签到和报告,而是更加注重实验过程的参与度和实际操作的准确性,鼓励学生积极参与实验预习和数据处理。 3. **优化实验项目结构**:整合实验项目,减少重复...

    科学技术馆体系共建共享平台建设方案.docx

    本方案旨在探讨如何构建这样一个平台,实现各科技馆之间的资源共享、活动协同与服务优化。 ### 第 1 章 建设背景 科技馆体系共建共享平台的建立源于以下几个需求:一是解决各科技馆资源分散、重复建设的问题,通过...

Global site tag (gtag.js) - Google Analytics