优化login方法

Signed-off-by: zup <jiu3295282258@163.com>
main
laptop_zup 9 months ago committed by zup
parent fd23a16497
commit 99788763da

@ -22,6 +22,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import java.io.IOException; import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.Objects;
/** /**
* *
@ -36,43 +37,46 @@ public class LoginController {
private ILoginfoService loginfoService; private ILoginfoService loginfoService;
@RequestMapping("login") @RequestMapping("login")
public ResultObj login(UserVo userVo,String code,HttpSession session){ public ResultObj login(UserVo userVo, String code, HttpSession session) {
//获得存储在session中的验证码 // 从 session 中获取验证码
String sessionCode = (String) session.getAttribute("code"); String sessionCode = (String) session.getAttribute("code");
if (code!=null&&sessionCode.equals(code)){ if (!Objects.equals(sessionCode, code)) {
Subject subject = SecurityUtils.getSubject(); return ResultObj.LOGIN_ERROR_CODE; // 验证码错误
AuthenticationToken token = new UsernamePasswordToken(userVo.getLoginname(),userVo.getPwd());
try {
//对用户进行认证登陆
subject.login(token);
//通过subject获取以认证活动的user
ActiverUser activerUser = (ActiverUser) subject.getPrincipal();
//将user存储到session中
WebUtils.getSession().setAttribute("user",activerUser.getUser());
//记录登陆日志
Loginfo entity = new Loginfo();
entity.setLoginname(activerUser.getUser().getName()+"-"+activerUser.getUser().getLoginname());
entity.setLoginip(WebUtils.getRequest().getRemoteAddr());
entity.setLogintime(new Date());
loginfoService.save(entity);
return ResultObj.LOGIN_SUCCESS;
} catch (AuthenticationException e) {
e.printStackTrace();
return ResultObj.LOGIN_ERROR_PASS;
}
}else {
return ResultObj.LOGIN_ERROR_CODE;
} }
// 验证码使用后清除
session.removeAttribute("code");
Subject subject = SecurityUtils.getSubject();
AuthenticationToken token = new UsernamePasswordToken(userVo.getLoginname(), userVo.getPwd());
try {
// 用户认证
subject.login(token);
ActiverUser activerUser = (ActiverUser) subject.getPrincipal();
// 存储用户信息到 session
WebUtils.getSession().setAttribute("user", activerUser.getUser());
// 记录登录日志
Loginfo entity = new Loginfo();
entity.setLoginname(activerUser.getUser().getName() + "-" + activerUser.getUser().getLoginname());
entity.setLoginip(WebUtils.getRequest().getRemoteAddr());
entity.setLogintime(new Date());
loginfoService.save(entity);
return ResultObj.LOGIN_SUCCESS;
} catch (AuthenticationException e) { // 其他认证错误
e.printStackTrace();
return ResultObj.LOGIN_ERROR_PASS;
}
} }
/** /**
* *
* @param response * @param response
* @param session * @param session
* @throws IOException
*/ */
@RequestMapping("getCode") @RequestMapping("getCode")
public void getCode(HttpServletResponse response, HttpSession session) throws IOException{ public void getCode(HttpServletResponse response, HttpSession session) throws IOException{

Loading…
Cancel
Save