@PostMapping(value = "/login",produces="application/json;charset=utf-8")
@SysLog(type="后台系统",action="登录功能",method="POST")
@ApiOperation(value="登录",httpMethod="POST",notes="若登录后token未过期则返回原token,并按照预先定义的有效时间顺延,若过期则生成新token,有效期默认10小时")publicJSONObject getLockPwd(@RequestParam String username, @RequestParam String password, HttpSession session,HttpServletResponse response) {//接收前台参数
logger.info("用户名:"+username);
logger.info("密码:"+password);//调用查询逻辑
EntityWrapper wrapper = new EntityWrapper();
wrapper.eq("login_code", username);
SysUser user=userService.selectOne(wrapper);
JSONObject json= newJSONObject();if(user != null && "0".equals(user.getStatus())) {//获取当前用户
Subject subject =SecurityUtils.getSubject();//根据前台传的用户名和密码进行认证
UsernamePasswordToken token = newUsernamePasswordToken(username, password);try{//认证通过
subject.login(token);
String encode=Base64.encode(user.getUserCode());//Cookie有效期默认为8小时
int time=28800;//将Cookie加密为16进制字符串
CookieUtils.setCookie(response, "userCode", encode, time);
user.setLastLoginDate(DateUtil.date());
userService.updateById(user);//将userCode放入session中保存
session.setAttribute("userCode", user.getUserCode());
json.put("token", subject.getSession().getId());
json.put(CommonEnum.RETURN_CODE,"000000");
json.put(CommonEnum.RETURN_MSG,"登录成功");
}catch(IncorrectCredentialsException e) {
json.put(CommonEnum.RETURN_CODE,"111111");
json.put(CommonEnum.RETURN_MSG,"用户名或密码错误");
}catch(Exception e) {
json.put(CommonEnum.RETURN_CODE,"222222");
json.put(CommonEnum.RETURN_MSG,"特殊异常");
}
}else{
json.put(CommonEnum.RETURN_CODE,"500");
json.put(CommonEnum.RETURN_MSG,"用户不存在");
}returnjson;
}