java登录锁定_[java]登录超时锁定

/**

* 登录

* @param param 参数

* @return 返回结果

*/

@ApiOperation(value = "登录",notes = "登录")

@PostMapping("/selectLogin")

@ResponseBody

public AjaxResult selectLogin(@RequestBody Map param)

{

UserRegister userRegister=null;

//判断是否为邮箱登录

if(param.get("username").indexOf("@")!=-1) {

//通过邮箱查询

userRegister = userRegisterService.selectUserRegisterEmail(param.get("username"));

if(userRegister==null){

return error("失败,邮箱未注册");

}else{

if(("0").equals(userRegister.getDelFlag())){

return error("该用户已被注销");

}

}

//输入的密码进行加密比对

String inPassword=passwordService.encryptPassword(param.get("username"), param.get("password"), userRegister.getSalt());

String outPassword=userRegister.getPassword();

//验证登陆次数

String codeMsg = setTime(param.get("username") + "", inPassword, outPassword);

if("0".equals(codeMsg)){

return success();

}else{

return error(codeMsg);

}

} else{

//通过手机号查询

userRegister = userRegisterService.selectUserRegisterPhone(param.get("username"));

if(userRegister==null){

return error("失败,手机号未注册");

}else{

if(("1").equals(userRegister.getDelFlag())){

return error("该用户已被注销");

}

}

//输入的密码进行加密比对

String inPassword = passwordService.encryptPassword(param.get("username"), param.get("password"), userRegister.getSalt());

String outPassword = userRegister.getPassword1();

//验证登陆次数

String codeMsg = setTime(param.get("username") + "", inPassword, outPassword);

if("0".equals(codeMsg)){

String tokenCode = TokenProccessor.makeToken();

redisUtil.setStringValue(tokenCode+"",param.get("username")+"",SESSION_TIME);

return success(tokenCode);

}else{

return error(codeMsg);

}

}

}

/**

* 设置超时时间

* @param key 键

* @param inPassword

* @param outPassword

* @return

*/

private String setTime(String key,String inPassword,String outPassword){

//验证账户锁定

Boolean exit=redisUtil.isExits(key);

if(exit==true && ("true").equals(redisUtil.getStringValue(key))){

String username = secondToTime(redisUtil.getTll(key));

return "该账户已被锁,剩余"+username;

}else if(exit==true && "5".equals(redisUtil.getStringValue(key))){

//账户锁定 设置半小时锁定

redisUtil.setStringValue(key,"true",30*60);

String username = secondToTime(redisUtil.getTll(key));

return "该账户已被锁,剩余"+username;

}else{

if(inPassword.equals(outPassword)){

redisUtil.delete(key);

return "0";

}else{

if(redisUtil.isExits(key)){

redisUtil.setIncr(key);

}else{

redisUtil.setEx(key,300,"1");

}

System.err.println("第" + redisUtil.getStringValue(key) + "次登录失败");

if("5".equals(redisUtil.getStringValue(key))){

return "您已连续输错" + redisUtil.getStringValue(key) + " 次,账户已锁定,请半小时以后再次登陆";

}else{

return "登陆失败,密码错误";

}

}

}

}

private String secondToTime(long second) {

long days = second / 86400;//转换天数

second = second % 86400;//剩余秒数

long hours = second / 3600;//转换小时数

second = second % 3600;//剩余秒数

long minutes = second / 60;//转换分钟

second = second % 60;//剩余秒数

if (0 < days){

return days + "天"+hours+"小时"+minutes+"分"+second+"秒";

}else {

return hours+"小时"+minutes+"分"+second+"秒";

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值