@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);
}
shiro用户登录验证
原创
©著作权归作者所有:来自51CTO博客作者152LvBigGrandPa的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Map特点
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
关于Shiro如何扩展用户信息字段处理手段
关于如何扩展shiro用户信息字段
用户信息 List ci -
【Shiro】Shiro登录验证失败问题
shiro登录验证一直失败:原因:在用户注册...
登录验证 md5加密 字符串 16进制 数据 -
JAVA:用户登录验证
JAVA用户登录验证
java 开发语言 if语句 用户名