作者 RuoYi

用户登录后记录最后登录IP&时间

@@ -8,15 +8,20 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio @@ -8,15 +8,20 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
8 import org.springframework.security.core.Authentication; 8 import org.springframework.security.core.Authentication;
9 import org.springframework.stereotype.Component; 9 import org.springframework.stereotype.Component;
10 import com.ruoyi.common.constant.Constants; 10 import com.ruoyi.common.constant.Constants;
  11 +import com.ruoyi.common.core.domain.entity.SysUser;
11 import com.ruoyi.common.core.domain.model.LoginUser; 12 import com.ruoyi.common.core.domain.model.LoginUser;
12 import com.ruoyi.common.core.redis.RedisCache; 13 import com.ruoyi.common.core.redis.RedisCache;
13 import com.ruoyi.common.exception.CustomException; 14 import com.ruoyi.common.exception.CustomException;
14 import com.ruoyi.common.exception.user.CaptchaException; 15 import com.ruoyi.common.exception.user.CaptchaException;
15 import com.ruoyi.common.exception.user.CaptchaExpireException; 16 import com.ruoyi.common.exception.user.CaptchaExpireException;
16 import com.ruoyi.common.exception.user.UserPasswordNotMatchException; 17 import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
  18 +import com.ruoyi.common.utils.DateUtils;
17 import com.ruoyi.common.utils.MessageUtils; 19 import com.ruoyi.common.utils.MessageUtils;
  20 +import com.ruoyi.common.utils.ServletUtils;
  21 +import com.ruoyi.common.utils.ip.IpUtils;
18 import com.ruoyi.framework.manager.AsyncManager; 22 import com.ruoyi.framework.manager.AsyncManager;
19 import com.ruoyi.framework.manager.factory.AsyncFactory; 23 import com.ruoyi.framework.manager.factory.AsyncFactory;
  24 +import com.ruoyi.system.service.ISysUserService;
20 25
21 /** 26 /**
22 * 登录校验方法 27 * 登录校验方法
@@ -35,6 +40,9 @@ public class SysLoginService @@ -35,6 +40,9 @@ public class SysLoginService
35 @Autowired 40 @Autowired
36 private RedisCache redisCache; 41 private RedisCache redisCache;
37 42
  43 + @Autowired
  44 + private ISysUserService userService;
  45 +
38 /** 46 /**
39 * 登录验证 47 * 登录验证
40 * 48 *
@@ -82,7 +90,18 @@ public class SysLoginService @@ -82,7 +90,18 @@ public class SysLoginService
82 } 90 }
83 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); 91 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
84 LoginUser loginUser = (LoginUser) authentication.getPrincipal(); 92 LoginUser loginUser = (LoginUser) authentication.getPrincipal();
  93 + recordLoginInfo(loginUser.getUser());
85 // 生成token 94 // 生成token
86 return tokenService.createToken(loginUser); 95 return tokenService.createToken(loginUser);
87 } 96 }
  97 +
  98 + /**
  99 + * 记录登录信息
  100 + */
  101 + public void recordLoginInfo(SysUser user)
  102 + {
  103 + user.setLoginIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
  104 + user.setLoginDate(DateUtils.getNowDate());
  105 + userService.updateUserProfile(user);
  106 + }
88 } 107 }