shiro用户登录密码错误超过次数,冻结账号30分钟

MC68HC908TV24 OSD模块:硬件寄存器配置与软滚动、闪烁功能实现详解 在嵌入式视频显示系统中,片上显示(OSD)模块是一种关键的硬件图形叠加技术。其核心原理在于通过专用硬件与视频同步信号(HSYNC/VSYNC)严格锁步,将CPU从繁重的像素级渲染中解放出来,从而保证显示的实时性与低功耗。这项技术的核心价值在于实现了稳定、低延迟的屏幕信息叠加,广泛应用于电视、工业监控等设备的菜单、状态信息显示。从工程实践角度,深入理解并配置OSD的硬件寄存器是实现高级功能的基础。例如,通过操作双缓冲寄存器机制,可以避免显示撕裂;而巧妙运用矩阵起止寄存器和事件线中断,则能实现字符行的软滚动动画 阅读详情
 @ApiOperation(value = "用户登录", notes = "用户登录", httpMethod = "POST")
    @PostMapping({"/login"})
    public ResultVO login(@ApiParam(name = "username", value = "用户名", required = true) @RequestParam String username,
                          @ApiParam(name = "password", value = "密码", required = true) @RequestParam String password,
                          @ApiParam(name = "rememberMe", value = "记住密码", required = false) @RequestParam(value = "rememberMe", required = false, defaultValue = "false") boolean rememberMe) {

        SysUser user = sysUserService.findByUsername(username);

        if(ObjectUtils.isNotEmpty(user) && user.getLoginCount()>=5){
            if(user.getLoginCount()==5){
                Const.pool.execute(new HandlerThread(user));
            }
            return ResultVOUtil.error(ResultEnum.LOGIN_FREEZE.getMessage());
        }

        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken(username, password);
        try {
            token.setRememberMe(rememberMe);
            subject.login((AuthenticationToken) token);
            subject.getSession().setTimeout(-1000L);
        } catch (AuthenticationException e) {
            if(ObjectUtils.isNotEmpty(user)){
                user.setLoginCount(user.getLoginCount()==null?1:user.getLoginCount()+1);
                sysUserService.saveOrUpdate(user);
            }
            return ResultVOUtil.error(ResultEnum.LOGIN_FAIL.getMessage());
        }
        //更新最后一个登录时间
        user.setLastLoginTime(LocalDateTime.now());
        sysUserService.saveOrUpdate(user);
        if (user.getEnabled().equals(0)){
            //判断账号是否注销
            return ResultVOUtil.error(ResultEnum.LOGIN_LOGOUT.getMessage());
        }
        user.setPassword("");
        return ResultVOUtil.success(user);
    }

 /**
     * 内部类
     */
    private class HandlerThread implements Runnable {

        private SysUser user;

        public HandlerThread(SysUser user){
            this.user = user;
        }

        @SneakyThrows
        @Override
        public void run() {
            try {
                Thread.sleep(1000*60*30);
                user.setLoginCount(0);
                sysUserService.updateById(user);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

ssm+shiro+redis 登录控制及重试次数超过5次账号锁定分钟 shiro+redis 实现登录控制及密码重试次数超过5次后账号锁定分钟不能登录 立即下载

相关推荐

springboot整合shiro登录失败次数限制功能的实现代码

主要介绍了springboot整合shiro-登录失败次数限制功能,实现此功能如果是防止坏人多次尝试,破解密码的情况,所以要限制用户登录尝试次数,需要的朋友可以参考下

第十六节 Shiro限制密码重试次数限制

一、基本思路 不管是单机还是集群,我们都得把用户登录次数记录下来,放到缓存里面。 单机使用的是Ehcache缓存,集群使用的是Redis缓存。单机或集群对于缓存来说,只是CacheManager接口的实现方式不同。 我们可以按照如下的思路来限制登录次数: 先查看是否系统中是否已有登录次数缓存。缓存对象结构预期为:"用户名-...

大宇的博客,欢迎访问 5311

SpringBoot+Shiro学习之密码加密和登录失败次数限制示例

本篇文章主要介绍了SpringBoot+Shiro学习之密码加密和登录失败次数限制示例,可以限制登陆次数,有兴趣的同学可以了解一下。

springboot整合shiro 认证与授权与记住密码密码错过锁定次数

                                                                       Spring Boot + Shiro总结 背景:最近领导要完成用户管理、菜单管理,角色管理等系统功能,上家公司的时候想过用了shiro来对整个系统进行权限控制,就想多一项技术,总归是好事,不过现在框架是spring boot,省去了沉于的配置,花了两天时...

xiaozhou_zi的博客 5417

欢迎使用CSDN-markdown编辑器

利用shiro实现密码错误锁定账户功能使用场景 用户多次输入密码错误,系统应给出密码错误提示和当前错误次数,并且提示密码剩余输入次数,当密码错误次数达到指定最大次数时,该账户将被锁定 shiro身份认证流程 如果简单了解过shiro身份认证的一些基本概念,都应该明白shiro的身份认证的流程,大致是这样的:当我们调用subject.login(token)的时候,首先这次身份认证会委托给Se

u013628442的博客 346

密码登录密码错误三次等待5分钟,超过6次锁定

密码登录密码错误三次等待5分钟,超过6次锁定 在controller设置登录 @Log("登录") @PostMapping("/login") @ResponseBody R ajaxLogin(String username, String password, String verify, HttpServletRequest request) { //先查询是否锁定 boolean isLocked = userService.isLocked(

weixin_45535370的博客 5060

Shiro】6、Shiro实现限制密码错误次数从而限制用户登录

我们的系统非常容易遭受攻击,被人暴力破解等,我们需要对同一账户密码错误次数进行统计,达到上限后,需要在一段时间内限制该用户登录,从而有效地保护账户密码的安全 1、重试限制散列凭据匹配器 package com.asurplus.common.shiro; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.

JACKAL 20万+

java代码实现登陆次数验证,登陆错误5次之后锁定30分钟

本方法因为是根据思路纯手写,代码可以再简化,功能尝试没问题,最主要就是在登陆验证中的逻辑,checkLogin()方法是登录前的验证,而真正的登陆方式采用的是Shiro,若不是采用Shiro登陆,将该逻辑采用到自己登陆的方法中即可实现 一、用户验证必须字段  用户实体类中User.java添加一下字段,可自选持久化工具,本次采用jpa作为持久化工具 除了用户id,账户,密码之外其中还必须有三个...

weixin_41996632的博客 2万+

springboot + shiro 尝试登录次数限制与并发登录人数控制

源码项目地址 尝试登录次数控制实现 实现原理 Realm在验证用户身份的时候,要进行密码匹配。最简单的情况就是明文直接匹配,然后就是加密匹配,这里的匹配工作则就是交给CredentialsMatcher来完成的。我们在这里继承这个接口,自定义一个密码匹配器,缓存入键值对用户名以及匹配次数,若通过密码匹配,则删除该键值对,若不匹配则匹配次数自增。超过给定的次数限制则抛出错误。这里缓存用的是ehcac...

weixin_33775572的博客 2024

java 错误登陆次数_纯java代码实现登陆次数验证,登陆错误5次之后锁定30分钟

本方法因为是根据思路纯手写,代码可以再简化,功能尝试没问题,最主要就是在登陆验证中的逻辑,checkLogin()方法是登录前的验证,而真正的登陆方式采用的是Shiro,若不是采用Shiro登陆,将该逻辑采用到自己登陆的方法中即可实现一、用户验证必须字段 用户实体类中User.java添加一下字段,可自选持久化工具,本次采用jpa作为持久化工具除了用户id,账户,密码之外其中还必须有三个字段la...

weixin_26969967的博客 2096

shiro账号登录用户名,手机号,邮箱)

shiro账号登录用户名,手机号,邮箱) 最近的一个需求,可以使用用户名和手机号和邮箱进行登录。百度得到的那些都过于复杂。 分析:其实本质代码的核心就是在于验证,验证你输入的东西到底能不能通过,你传进去的账号密码需要进行验证后才能登录,其实一种最简单的方法就是在验证的时候,对username替换成为邮箱和手机号,下面的代码基本不用更改,就是controller里面的登录后处理代码,...

陈陈陈亚萌_的博客 1553

java shiro 访问频率_ssm+shiro+redis 登录控制及重试次数超过5次账号锁定分钟

【实例简介】shiro+redis 实现登录控制及密码重试次数超过5次后账号锁定分钟不能登录【实例截图】【核心代码】SSM-Shiro└── SSM-Shiro├── logs│ └── loginfo.log├── pom.xml├── src│ └── main│ ├── java│ │ └── cn│ │ └── com│ ...

weixin_42421854的博客 612

Shiro限制登录尝试次数

要限制用户登录尝试次数,必然要对用户密码验证失败做记录,Shiro用户密码的验证交给了CredentialsMatcher  所以在CredentialsMatcher里面检查,记录登录次数是最简单的做法。 我们用Ehcache来记录用户登录次数的计数,继承HashedCredentialsMatcher,加入缓存,在每次验证用户密码之前先验证用户名尝试次数,如果超过5次就抛出尝试

zsg88的专栏 9503

springmvc+mybatis+shiro MD5加密匹配&登录失败次数锁定帐号

shiro的身份认证的流程,大致是这样的:当我们调用subject.login(token)的时候,首先这次身份认证会委托给Security Manager,而Security Manager又会委托给Authenticator,接着Authenticator会把传过来的token再交给我们自己注入的Realm进行数据匹配从而完成整个认证。如果不太了解这个流程建议再仔细读一下官方提供的Authent

椭圆的博客 2037

Shiro登录限制篇

登录账号时,输错密码次数达到3次以后,锁定账号3分钟并显示锁定时间,在此期间内登录操作无效

qq_43654581的博客 1310

十.shiro加密解密,短信免密登录,限制密码重试次数、防止暴力破解

一。加密解密 存储尽量不要用明文密码,且不可逆的加密存储 1.加密算法 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的 数据,常见的散列算法如 MD5、SHA 等。一般进行散列时最好提供一个 salt(盐),比如 加密密码“admin”,产生的散列值是“21232f297a57a5a743894a0e4a801fc3”,可以到一 些 md5 解密网站很容易的通...

u014203449的博客 3172

springboot+redis实现登录失败次数限制

需求:为了防止枚举攻击,完成安全性测试扫描。先是保证账号密码其一错误但返回错误一致,添加Referer拦截器,现在需要限制登录失败次数限制,本文做的是登录失败五次账号锁定3小时。 登录Controller添加如下代码 @Autowired private RedisTemplate<String, String> redisTemplate; //用户登录是否被锁定 三小时 redisKey 前缀 private String SHIRO_IS_.

爱java的小蓝的博客 3054

用户登录、注册、修改密码

1、登录时输入账号密码,传入后台进行校验,如果成功则跳转主页面并存入session中,否则给与提示 2、注册:输入手机号码,js校验手机号码,发送验证码,将验证码存入数据库中设定状态为0,如果输入则改为1禁止再次使用,超过1分钟可以将改状态,取消此验证码,输入验证码需要与数据库中的验证码比对,在传输过程中尽量加密传输 3、修改密码:填写手机号,发送验证码时js判断一下,进入后台发送验证码,在输...

sarida的博客 5615
上一篇: mybatis-plus代码生成器,程序员偷懒神器
下一篇: 好用到爆的流量卡分销平台
HZ-CAN
博客等级 码龄6年 1粉丝 · 7原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值