登录功能实现账号锁定
需求
- 用户进行登录的时候密码账号正确登录成功
- 用户进行登录的时候账号输入错误提示用户不存在
- 用户进行登录的时候密码输入错误提示密码错误和剩余输入密码的机会,当超过最大密码输入次数密码仍是错误则账号锁定
@RequestMapping("/login")public ModelAndView login(@RequestParam(name = "username", required = true) String acount,@RequestParam(name = "password", required = true) String pwd,HttpServletRequest req) { // Servlet请求//先声明一个返回值ModelAndView mav = new ModelAndView();//调用service层 (账号以及密码同时传入service/dao/)T_User user = userServiceImpl.getuser(acount);//判定账号是否存在if (user == null) {//说明这个账号是不存在的//返回跳转到登陆页面 -且提示账号不存在mav.setViewName("login.jsp");mav.addObject("acount_msg", "账号不存在");return mav;}//判定账号是否锁定if (user.getUstatus() == 0) {// Ustatus是一个属性 实体层中的user有对应的get和set方法//跳转到登陆页面//提示账号锁定mav.setViewName("login.jsp");mav.addObject("acount_msg", "账号已经锁定");return mav;}//执行账号存在的逻辑//判断该账号对应的密码是否匹配 (从浏览器端接收到的密码是否正确)if (!user.getUpwd().equals(pwd)) {//密码不匹配怎么办 ?ServletContext servletContext = req.getServletContext(); // 类似于Session的东西,但是比Session作用域更大//剩余次数判定Object obj_limit = servletContext.getAttribute("limit_" + user.getUcode()); // 得到这个属性//如果账号是第一次/第二次错误 ---只是需要提示-以及剩余次数//设置用户一共有N次机会int n = 5; // 用于第一次访问且输入错误密码后 创建session 该session用于判断还能输入几次错误密码的次数if (obj_limit == null) { // 当obj_limit为空的时候 表示第一次获得这个session//提示-剩余次数 // 此时需要为其设置值 并提示用户mav.setViewName("login.jsp");mav.addObject("acount_msg", "剩余登陆次数为" + (n - 1) + "次");//设置session中用户的剩余次数servletContext.setAttribute("limit_" + user.getUcode(), n - 1);return mav;}//obj_limit不为null 表示这不是第一次创造这个session 而是已经存在//目前剩余的次数 用于判断是否锁定该用户int limit = (int) obj_limit;//如果减一等于 0 说明剩余次数用完了if (limit - 1 == 0) {//说明当前是最后一次机会//如果账号是第三次错误 --除了提示-该该用户的状态 -改为 0 -锁定//锁定账号 ustatus=0表示锁定账号 =1表示启用账号userServiceImpl.updateUser(user.getUcode(), (short) 0);//设置页面提示信息 acount_msg是前端调用的 显示在前端页面的提示用户的信息mav.addObject("acount_msg", "次数用完,账号锁定");//清理session的限制servletContext.removeAttribute("limit_" + user.getUcode());} else {//limit -1>0 说明还有机会 //计算剩余次数-提示mav.addObject("acount_msg", "密码错误-剩余" + (limit - 1) + "次数");//更新sesionservletContext.setAttribute("limit_" + user.getUcode(), limit - 1);}//跳转到登陆页面 -提示密码不正确mav.setViewName("login.jsp");return mav;}//密码正确的逻辑//跳转 (到主页/登陆)mav.setViewName("index.html");return mav;}
note:
1.账号的锁定是在数据库中的用户表定义了一个ustatus字段,1表示当前用户未被锁定,0表示当前用户被锁定
2.密码输入错误,剩余次数的数据保存在session中,利用的是HttpServletRequest,该Session作用域更大并且这样使得在不同的浏览器中剩余密码输入次数相同
3.主要是理解代码逻辑,是否需要创建session、session中如何存储剩余密码输入次数以及何时进行账号锁定
登录功能实现账号锁定相关推荐
- java登录失败三次一小时后再等_Spring Security实现多次登录失败后账户锁定功能...
在上一次写的文章中,为大家说到了如何动态的从数据库加载用户.角色.权限信息,从而实现登录验证及授权.在实际的开发过程中,我们通常会有这样的一个需求:当用户多次登录失败的时候,我们应该将账户锁定,等待一 ...
- vue登录如何存储cookie_vue项目实现表单登录页保存账号和密码到cookie功能
实现功能: 1.一周内自动登录勾选时,将账号和密码保存到cookie,下次登陆自动显示到表单内 2.点击忘记密码则清空之前保存到cookie的值,下次登陆需要手动输入 次要的就不说了直接上主要的代码 ...
- 第三方账号登录功能接入完全流程
第三方账号虽然是一个小的功能点,但是在设计过程中,我们依然要结合自身产品的特点来确定产品方案和产品流程. 本人在一家网络游戏公司工作,负责公司的基础平台性的产品.主要有用户中心.充值/支付平台.账号密 ...
- Android编写一个登录界面,利用数据库实现记住密码,注册账号,强制下线,以及类似QQ的下拉列表登录功能
首先呢,看到这么长的标题,是不是感觉这些功能有点难以实现呢,哈哈,其实并没有想象中的那么复杂,下面就跟着笔者来一起学习一下这些功能是怎么实现的吧! 1.建立一个所有活动的父类,继承自Appcompat ...
- 第三方账号登录功能接入详细流程(必看)
第三方账号虽然是一个小的功能点,但是在设计过程中,我们依然要结合自身产品的特点来确定产品方案和产品流程. 本人在一家网络游戏公司工作,负责公司的基础平台性的产品.主要有用户中心.充值/支付平台.账号密 ...
- 第三方账号登录功能接入全流程分析(转)
第一次写产品方面的心得文章,如有写的不好或者错误的地方,请大家多多指教. 本人在一家网络游戏公司工作,负责公司的基础平台性的产品.主要有用户中心.充值/支付平台.账号密保APP等.我们公司的用户中心之 ...
- 登录功能,发现账号密码没有区分大小写???
开发登录功能时,发现账号密码没有区分大小写??? 问题描述 开发登录功能时,测试发现账号密码竟然没有区分大小写便可登录,顿时脑子一热,查!!! 原因分析 可能情况一:MySQL数据库设置成不区分大小写 ...
- suse账号解锁_Linux多次登录失败用户被锁定使用Pam_Tally2解锁
在Linux系统中,用户多次登录失败会被锁定,一段时间内将不能再登录系统,这是一般会用到Pam_Tally2进行账户解锁. 了解PAM Linux-PAM (Pluggable Authenticat ...
- android 点击退出账号,安卓退出登录功能
退出登录功能基本上每个app都需要用到的我这里介绍一种使用广播退出登录 1.在退出登录的页面上发送一个广播 Intent intent =new Intent(); intent.setAction( ...
最新文章
- pythonos是啥_Pythonos模块介绍
- 注意Class类的特殊性
- mysql定时备份并上传ftp_Linux下定时任务实现mysql自动备份并上传远程ftp
- JavaScript Date 对象
- 安装java过程_Java的安装过程
- 五、分治法应用--矩阵乘法
- 利用谷歌翻译。帮助你的网站轻松实现多语言互换
- Cortex-M3的存储器系统
- ArcGIS API for JavaScript 4.9 3.26 发布与新特性
- java5个线程_java基础thread——java5之后的多线程(浅尝辄止)
- infor wms 中英文对照_WMS系统中波次管理有多大作用
- IS-IS快速收敛调优(二)——链路故障检测、LSP智能定时器和SPF智能定时器
- 豆瓣是用python开发的吗_Google、知乎、豆瓣、网易都在用Python Web开发!
- 快递鸟即时查询接口的连接和使用
- Springboot+vue项目实验室管理系统
- 区别网络带宽中的Kbps和KB/s是什么意思?
- Eclipse+webservice简单实例搭建
- 咋筛选变量进入多因素回归 纳入变量 变量选择 类似机器学习的特征选择 cox回归分析cox多因素
- 少儿Python编程6-计算机数据结构和算法
- 爬取大众点评黄焖鸡米饭的数据
热门文章
- python选股策略,金叉,死叉,绿色云
- 博士生毕业后进高校当老师,直接是副教授吗
- 二维数组名、二维数组名取地址、二级指针
- [资料] 为实现正确信号调理的噪声计算,这七个步骤你得get(转载)
- 用DELPHI7与delphi2009总结
- 源代码、明日边缘、土拔鼠之日有感-实践、反馈与重新认识
- linux6.5取消屏保,怎么把wps屏保关掉
- 编写html获取天气(数据来源theamp;nbs…
- MQ100门座起重机 双螺旋输送机总装图 减速机图纸 自动圆式焊机总装图 VF6-7空气压缩机曲轴加工工艺及夹具设计 组合机床工艺设计 RV蜗轮蜗杆减速机 90度皮带机运载机器人设计……
- 看广告赚钱,×××好方法