Просмотр исходного кода

[微信第三方登录][修改]:登录状态修改

release_toaliyun_real
Stormeye Wu 7 лет назад
Родитель
Сommit
f3409e7a52
5 измененных файлов: 40 добавлений и 18 удалений
  1. +17
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java
  2. +13
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java
  3. +4
    -3
      mallinkAdmin/src/main/java/com/iformall/shiro/MyRetryLimitCredentialsMatcher.java
  4. +3
    -7
      mallinkAdmin/src/main/java/com/iformall/shiro/MyShiroRealm.java
  5. +3
    -2
      mallinkWechatOpen/src/main/java/com/iformall/shiro/MyShiroRealm.java

+ 17
- 2
mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java Просмотреть файл

@@ -21,6 +21,8 @@ import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.DisabledAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.slf4j.Logger;
@@ -102,15 +104,28 @@ public class HomeController extends BaseController {
// throw new SystemException(ErrorCode.LOGIN_USER_OR_PWD_ERROR);
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
// check user
MallUserInfo userCheck = mallUserInfoService.getByUsername(user.getUsername());
if(userCheck == null) {
logger.error(ErrorCode.USER_IS_EMPTY.getMessage());
return new ResultData(ErrorCode.USER_IS_EMPTY);
}
if(userCheck.getStatus().equals(EnumMallUserStatus.NOT_VALID.getCode())) {
logger.error(ErrorCode.USER_IS_LOCKED.getMessage());
return new ResultData(ErrorCode.USER_IS_LOCKED);
}
boolean isLogin = false;
try {
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword());
subject.login(token);
isLogin = true;
} catch (MallinkException e) {
} catch (UnknownAccountException e) {
logger.error(e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
return new ResultData(ErrorCode.USER_IS_EMPTY);
} catch (DisabledAccountException e) {
logger.error(e.getMessage());
return new ResultData(ErrorCode.USER_IS_LOCKED);
} catch (Exception e) {
logger.error(e.getMessage());
return new ResultData(ErrorCode.USER_PASSWD_ERR);


+ 13
- 4
mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java Просмотреть файл

@@ -24,6 +24,8 @@ import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.DisabledAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -101,9 +103,13 @@ public class WechatLoginController extends BaseController {
UseriFormallToken token = new UseriFormallToken(user.getUsername());
subject.login(token);
isLogin = true;
} catch (MallinkException e) {
} catch (UnknownAccountException e) {
log.error(e.getMessage());
ret.put("code", e.getErrorCode());
ret.put("code", ErrorCode.USER_IS_EMPTY.getCode());
ret.put("message", e.getMessage());
} catch (DisabledAccountException e) {
log.error(e.getMessage());
ret.put("code", ErrorCode.USER_IS_LOCKED.getCode());
ret.put("message", e.getMessage());
} catch (Exception e) {
log.error(e.getMessage());
@@ -240,9 +246,12 @@ public class WechatLoginController extends BaseController {
response.addCookie(unameCookie);

return new ResultData();
} catch (MallinkException e) {
} catch (UnknownAccountException e) {
log.error(e.getMessage());
return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(), e.getMessage());
} catch (DisabledAccountException e) {
log.error(e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
return new ResultData(ErrorCode.USER_IS_LOCKED.getCode(), e.getMessage());
} catch (Exception e) {
log.error(e.getMessage());
return new ResultData(Result.ERROR, e.getMessage());


+ 4
- 3
mallinkAdmin/src/main/java/com/iformall/shiro/MyRetryLimitCredentialsMatcher.java Просмотреть файл

@@ -4,10 +4,11 @@ import com.iformall.common.ErrorCode;
import com.iformall.domain.po.MallUserInfo;
import com.iformall.enums.EnumLoginType;
import com.iformall.enums.EnumMallUserStatus;
import com.iformall.exception.MallinkException;
import com.iformall.service.MallUserInfoService;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.DisabledAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import org.springframework.context.annotation.Configuration;

@@ -27,11 +28,11 @@ public class MyRetryLimitCredentialsMatcher extends HashedCredentialsMatcher {
String username = (String)tk.getPrincipal();
MallUserInfo user = userService.getByUsername(username);
if(user == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
throw new UnknownAccountException(ErrorCode.USER_IS_EMPTY.getMessage());
}
// 用户被禁用
if(user.getStatus()==null ||!EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) {
throw new MallinkException(ErrorCode.USER_IS_LOCKED);
throw new DisabledAccountException(ErrorCode.USER_IS_LOCKED.getMessage());
}
return true;
}


+ 3
- 7
mallinkAdmin/src/main/java/com/iformall/shiro/MyShiroRealm.java Просмотреть файл

@@ -7,11 +7,7 @@ import com.iformall.enums.EnumMallUserStatus;
import com.iformall.exception.MallinkException;
import com.iformall.service.MallUserInfoService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
@@ -55,11 +51,11 @@ public class MyShiroRealm extends AuthorizingRealm {
String username = (String)token.getPrincipal();
MallUserInfo user = userService.getByUsername(username);
if(user == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
throw new UnknownAccountException(ErrorCode.USER_IS_EMPTY.getMessage());
}
if(user.getStatus()==null ||
!EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) {//用户被禁用
throw new MallinkException(ErrorCode.USER_IS_LOCKED);
throw new DisabledAccountException(ErrorCode.USER_IS_LOCKED.getMessage());
}
SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(
user, //用户


+ 3
- 2
mallinkWechatOpen/src/main/java/com/iformall/shiro/MyShiroRealm.java Просмотреть файл

@@ -53,9 +53,10 @@ public class MyShiroRealm extends AuthorizingRealm {
// if (0==user.getEnable()) {
// throw new LockedAccountException(); // 帐号锁定
// }
//用户被禁用
if(user.getStatus()==null ||
!EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) {//用户被禁用
throw new UnknownAccountException("用户被禁用");
!EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) {
throw new DisabledAccountException("用户被禁用");
}
if(!user.getTenantId().equals("1")) {
// 只支持租户为1的用户


Загрузка…
Отмена
Сохранить