Parcourir la source

fix feature: login failed log

张双江 il y a 7 ans
Parent
commit
9b268e7122

+ 12 - 7
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/configure/realm/ShiroRealm.java

@@ -92,11 +92,11 @@ public class ShiroRealm extends AuthorizingRealm {
 
     private Logger LOG = LoggerFactory.getLogger(getClass());
 
-    private void createLog(DefaultUsernamepasswordToken uptoken) {
+    private void createLog(DefaultUsernamepasswordToken uptoken, String reason) {
         Object username = uptoken.getUsername();
         Date date = new Date();
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        LOG.error("用户{}登录失败,失败时间:{}",username,df.format(date));
+        LOG.error("用户{}登录失败,失败时间:{},失败原因:{}",new Object[]{username,df.format(date), reason});
     }
 
     @Override
@@ -106,18 +106,21 @@ public class ShiroRealm extends AuthorizingRealm {
         String loginType = upToken.getLoginType();
         if (loginType.equals("mobile")) {
             if (userService.findByMobile(username) == null) {
-                createLog(upToken);
+                String reason = "手机登录用户不存在";
+                createLog(upToken, reason);
                 throw new AccountException("user not exist");
             }
 
             if (!mobileVerificationService.validateMobileVerification(username, new String(upToken.getPassword()))) {
-                createLog(upToken);
+                String reason = "手机登录验证错误";
+                createLog(upToken, reason);
                 throw new IncorrectCredentialsException("wrong verification");
             }
             return new SimpleAuthenticationInfo(username, upToken.getPassword(), getName());
         } else if (loginType.equals("email&mobile")) {
             if (username.isEmpty()) {
-                createLog(upToken);
+                String reason = "邮箱登录用户名为空";
+                createLog(upToken, reason);
                 throw new AccountException("empty username");
             }
             UserDTOForMT userDTOForMT = userService.getUserByEmail(username);
@@ -125,11 +128,13 @@ public class ShiroRealm extends AuthorizingRealm {
                 userDTOForMT = userService.findByMobile(username);
             }
             if (userDTOForMT == null) {
-                createLog(upToken);
+                String reason = "邮箱登录用户不存在";
+                createLog(upToken, reason);
                 throw new HttpBadRequestException("user not exist");
             }
             if (!userDTOForMT.getPassword().equals(new String(upToken.getPassword()))) {
-                createLog(upToken);
+                String reason = "邮箱登录密码错误";
+                createLog(upToken, reason);
                 throw new IncorrectCredentialsException("wrong password");
             }
             return new SimpleAuthenticationInfo(username, userDTOForMT.getPassword(), getName());