diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index 83d9de6..9d014aa 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.*; +import org.apache.shiro.authc.AuthenticationException; import sun.rmi.runtime.Log; import java.util.List; @@ -23,7 +24,7 @@ public interface ISysUserService { * @param languageCode 界面语言 * @return */ - SessionUser queryUserLogin(String loginName, String password, String languageCode); + SessionUser queryUserLogin(String loginName, String password, String languageCode) throws AuthenticationException; /** * 修改权限状态 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java index 52b246e..5dc904a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java @@ -14,6 +14,7 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authc.AuthenticationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -63,7 +64,9 @@ public class AuthController { ResultBean result = new ResultBean(true, "", AuthUtil.getSessionUser()); result.setUrl("/"); return result; - } catch (ImppBusiException e) { + }catch (AuthenticationException e) { + return new ResultBean(false,e.getMessage()); + }catch (ImppBusiException e) { return new ResultBean(false,e.getErrorDetail() + ",so:" + e.getErrorSolution()); }catch (Exception e){ return ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java index fa54917..2d375db 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java @@ -13,6 +13,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authc.AuthenticationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -86,31 +87,20 @@ public class SystemLoginService implements ISystemLoginService { */ public SysUser getUserLoginInfo(String loginName,String pwd) { SysUser user = sysUserRDao.getByProperty("userLoginName",loginName); - - try { // 密码加密 - pwd = EncryptTool.hexMD5(pwd); - }catch (Exception e){ - e.printStackTrace(); - } - if(user == null){ //用户不存在 - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) - .setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION.getCode()) - .setErrorDetail("用户不存在") - .setErrorSolution("重新登陆") - .build(); - } - - if (!StringUtils.equals(user.getUserLoginPassword(),pwd )) { //密码不符 - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) - .setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION.getCode()) - .setErrorDetail("登陆密码错误") - .setErrorSolution("重新输入") - .build(); + throw new AuthenticationException("用户不存在"); + }else { + try { // 密码加密 + pwd = EncryptTool.hexMD5(pwd); + } catch (Exception e) { + LOGGER.error("登录密码加密出错。"); + throw new AuthenticationException("登陆密码错误"); + } + if (!StringUtils.equals(user.getUserLoginPassword(), pwd)) { //密码不符 + throw new AuthenticationException("登陆密码错误"); + } + return user; } - return user; } /** diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 5ba931b..4ddd263 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -19,6 +19,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ValidatorBean; +import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationToken; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,33 +72,38 @@ public class SysUserService implements ISysUserService { private RefUserPositionRepository refUserPositionRDao; @Override - public SessionUser queryUserLogin(String loginName, String password, String languageCode) { + public SessionUser queryUserLogin(String loginName, String password, String languageCode) throws AuthenticationException { LOGGER.debug("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", loginName, password, languageCode); - SysUser user = getSysUserByLoginName(loginName); - - if(user == null){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.LOGIN_USER_NAME_EXCEPTION.getCode()) - .setErrorDetail("用户名不存在") - .setErrorSolution("请重新输入用户名") - .build(); - } - - AuthenticationToken token = null; - switch (user.getUserTypeId()) { - case 2: - token = new AdminToken(loginName, password, languageCode); - break; - case 3: - token = new SaAdminToken(loginName, password, languageCode); - break; - default: - token = new UserToken(loginName, password, languageCode); - break; - } +// SysUser user = this.getSysUserByLoginName(loginName); +// +// if(user == null){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.LOGIN_USER_NAME_EXCEPTION.getCode()) +// .setErrorDetail("用户名不存在") +// .setErrorSolution("请重新输入用户名") +// .build(); +// } +// +// AuthenticationToken token = null; +// switch (user.getUserTypeId()) { +// case 2: +// token = new AdminToken(loginName, password, languageCode); +// break; +// case 3: +// token = new SaAdminToken(loginName, password, languageCode); +// break; +// default: +// token = new UserToken(loginName, password, languageCode); +// break; +// } +// SessionUser sessionUser = AuthUtil.login(token); + + UserToken token = new UserToken(loginName,password,languageCode); + System.out.println("=============" + token); SessionUser sessionUser = AuthUtil.login(token); + SysUser user = this.getSysUserByLoginName(loginName); packSessionUser(sessionUser, user, user.getUserTypeId(), languageCode); AuthUtil.setSessionUser(sessionUser);