当前位置: 首页 > news >正文

潍坊网站建设 马百度推广销售

潍坊网站建设 马,百度推广销售,校园二手交易网站设计的原则,免费建站怎么操作1 引言 系统为了避免密码遭到暴力破解,通常情况下需要在登录时,限制用户验证账号密码的次数,当达到一定的验证次数后,在一段时间内锁定该账号,不再验证。本章将用几行代码实现该功能,完整代码链接在文章最…

1 引言

系统为了避免密码遭到暴力破解,通常情况下需要在登录时,限制用户验证账号密码的次数,当达到一定的验证次数后,在一段时间内锁定该账号,不再验证。本章将用几行代码实现该功能,完整代码链接在文章最后。

2 原理介绍

可以看到在登录接口中,4行代码即可实现该功能,这里使用Redis可以很方便的记录“登录失败次数”,以及设置其失效时间(即锁定时间),主要步骤是:

  1. 账号登录时,当前账号“登录失败次数”默认+1。
  2. 设置“登录失败次数”失效的时间(即锁定时间)。
  3. 当“登录失败次数”大于某个阈值时,就直接返回错误提示,不再走验证逻辑。
  4. 账号登录成功,清除“登录失败次数”,重新计数。

注意:第2步和第3步,可以交换顺序。
第2步在前时,锁定中发起请求会导致重新计时。
第3步在前时,锁定中发起请求不会导致重新计时。

在这里插入图片描述

3 代码

isTrue是断言方法,不满足条件时,抛出异常,在全局异常处理中,统一返回错误提示。参见Spring全局异常处理HandlerExceptionResolver使用。

package com.zeroone.service.sys;import com.zeroone.common.RedisKey;
import com.zeroone.entity.sys.User;
import com.zeroone.service.BaseService;
import com.zeroone.utils.Param;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;@Service("UserService")
public class LoginServiceImpl extends BaseService implements LoginService {@Overridepublic Object webLogin(Param info) {String account = info.getStringNotNull("account").trim();String password = info.getStringNotNull("password").trim();Long loginFailedCount = redisTemplate.opsForValue().increment(RedisKey.LOGIN_FAILED_COUNT + account, 1);//先将登录失败次数+1redisTemplate.expire(RedisKey.LOGIN_FAILED_COUNT + account, 10, TimeUnit.SECONDS);// 指定登录失败次数失效时间isTrue(loginFailedCount <= 5, "请10秒后重试!");//当登录失败次数大于阈值后,直接返回错误信息//TODO 模拟验证密码isTrue(password.equals("12345"), "账号或密码错误,还能重试" + (5 - loginFailedCount) + "次!");redisTemplate.delete(RedisKey.LOGIN_FAILED_COUNT + account);// 验证通过后,清除登录失败次数User user = new User();user.setId(1L);user.setName("张三");user.setAccount("12345678901@qq.com");user.setPhone("12345678901");String token = tokenService.createToken(user);return token;}@Overridepublic void logout() {tokenService.deleteToken();}
}
    /*** true断言** @param expression 参数* @param msg        描述*/public void isTrue(boolean expression, String msg) {if (!expression) {throw new MyRuntimeException(HttpCode.BAD_REQUEST_CODE, msg);}}

4 测试

  1. 启动项目,请求:http://localhost:8080/web/login,输入错误的密码,提示"账号或密码错误,还能重试X次!"。

在这里插入图片描述
2. 然后连续验证错误5次后,提示"请10秒后重试!",表示该账号被锁定,拒绝验证,且10秒内无法再次请求验证。
在这里插入图片描述

5 完整代码

Gitee代码链接

http://www.jinmujx.cn/news/80344.html

相关文章:

  • 南京网站制作链接互联网平台公司有哪些
  • 哪里有做营销型网站的公司网站建设品牌公司
  • 一个网站大概多少钱我要看今日头条
  • 广州嘉怡服饰有限公司网站建设win7优化软件
  • 建设自己的网站怎么做中国搜索网站排名
  • 网站怎么添加关键词 好让百度收入_ 现在网站用的是模板做的seo优化技术教程
  • 用什么做网站网站推广软件有哪些
  • 做往外批发的网站吗国际新闻大事
  • 营销型网站设计文章市场推广方案范文
  • 苹果手机怎么做ppt下载网站吗收录查询 站长工具
  • 政府网站模板免费下载矿泉水软文广告500字
  • 网站建设重庆google排名
  • 响应式网站 移动端网站seo站长网怎么下载
  • 设计一个网站需要什么当阳seo外包
  • 做外围代理要有自己的网站广州网站建设费用
  • 温州互联网公司济南做seo外包
  • 网站设计论坛谷歌官网入口
  • 怎么样用手机做网站关键词网站seo是什么
  • 宁夏网站开发灰色词优化培训
  • 系部网站开发计划书seo外包是什么
  • 如何建设一个外卖订餐平台网站网站seo置顶 乐云践新专家
  • 怎么样用css做网站网络营销专业可以干什么工作
  • 推进政府网站集约化建设工作网络营销的特点有
  • 做网做网站建设seo是什么意思的缩写
  • 如何做提卡网站百度竞价平台官网
  • 六安网站建设西安seo推广公司
  • 北京做网站开发公司有哪些seo权威入门教程
  • php网站的客服窗口怎么做的谷歌推广怎么样
  • 网站弹广告是什么样做的北京seo平台
  • 简易制作网站今日新闻内容摘抄