Commit d2e57ae3 by 胡文明

适应人行电证登录

parent 8ff5dd8b
package org.sss.presentation.noui.api.response;
/**
* <br/>created in 2020/6/19 14:56
*
* @author huwenming_saw
*/
public enum ErrorCode {
SYSTEM_ERROR("R9999","系统错误,请稍后重试"),
LOGIN_FIRST_LOGIN("R9996","初次登陆需修改密码"),
LOGIN_PWD_AME_INTERVAL("R9995","已长时间未修改密码,请修改密码"),
LOGIN_PWD_CHECK("R9994","连续多次错误密码,用户已锁定,请联系管理员!"),
LOGIN_PARAMETER_CHECK("R9993","登陆信息不完整,用户名或密码为空"),
LOGIN_NON_USR("R9992","系统无此用户"),
LOGIN_LOCK_USR("R9991","用户已被锁定"),
LOGIN_EXPRIED_USR("R9990","用户已被注销"),
LOGIN_PWD_ERROR("R9989","密码错误!"),
LOGIN_DN_ERROR("R9988","DN码错误!"),
LOGIN_STATE_ABNORMAL_ERROR("R9987","无效用户");
private final String code;
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
private final String message;
ErrorCode(String code, String message){
this.code=code;
this.message=message;
}
@Override
public String toString() {
return "ErrorCode{" +
"code='" + code + '\'' +
", message='" + message + '\'' +
'}';
}
}
......@@ -8,6 +8,7 @@ public class Constants {
public final static String USERNAME = "username";
public final static String PASSWORD = "password";
public final static String DNCODE = "dncode";
public final static String DISPLAY_FILE_NAME = "fileName";
......
package org.sss.presentation.noui.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
......@@ -23,6 +18,7 @@ import org.sss.common.model.IMenuItem;
import org.sss.presentation.noui.api.exception.NoUiException;
import org.sss.presentation.noui.api.model.Menu;
import org.sss.presentation.noui.api.request.NoUiRequest;
import org.sss.presentation.noui.api.response.ErrorCode;
import org.sss.presentation.noui.api.response.ErrorCodes;
import org.sss.presentation.noui.api.response.ResultUtil;
import org.sss.presentation.noui.common.Constants;
......@@ -39,6 +35,7 @@ import org.sss.presentation.noui.util.StringUtil;
@Controller
public class LoginController {
private static final Log log = LogFactory.getLog(LoginController.class);
public static final String ERROR="error";
@ResponseBody
@RequestMapping(value = "/login", method = RequestMethod.POST)
......@@ -46,11 +43,13 @@ public class LoginController {
// TODO???
//System.out.println(dataMap);
NoUiRequest noUiRequest = new NoUiRequest(request, "", dataMap);
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<>();//此map会存储返回错误码
String userId = noUiRequest.getDataMap().get(Constants.USERNAME).toString();
String password = noUiRequest.getDataMap().get(Constants.PASSWORD).toString();
String dncode = noUiRequest.getDataMap().get(Constants.DNCODE).toString();
map.put("j_username", userId);
map.put("j_password", password);
map.put("j_dncode", dncode);
NoUiContext context = NoUiContextManager.createNoUiContext(noUiRequest);
try {
if (context.getSession().login(map)) {
......@@ -82,12 +81,25 @@ public class LoginController {
RedisLoginInfo redisLoginInfo = new RedisLoginInfo(userId, token, NumericUtil.sessionTimeOut(), sysmodBytes,noUiRequest.getTerminalType());
RedisUtil.set(StringUtil.userUniqueId(noUiRequest), redisLoginInfo);
return ResultUtil.result(ErrorCodes.SUCCESS, ErrorCodes.SUCCESS_INFO, retDatamap);
//解决初次登陆,超期限登陆
final Object o = map.get(ERROR);
if (Objects.isNull(o)) {
return ResultUtil.result(ErrorCodes.SUCCESS, ErrorCodes.SUCCESS_INFO, retDatamap);
}else {
ErrorCode errorCode = (ErrorCode) o;
log.error(errorCode);
return ResultUtil.result(errorCode.getCode(), errorCode.getMessage(), retDatamap);
}
}else {
final ErrorCode errorCode = (ErrorCode) map.get(ERROR);
log.error(errorCode);
return ResultUtil.result(errorCode.getCode(), errorCode.getMessage(), null);
}
} catch (Exception e) {
log.error("Login command error", e);
//throw new NoUiException("Login command error", e);
return ResultUtil.result(ErrorCodes.ERROR, "login failed with exception", null);
// return ResultUtil.result(ErrorCodes.ERROR, "login failed with exception", null);
return ResultUtil.result(ErrorCode.SYSTEM_ERROR.getCode(), ErrorCode.SYSTEM_ERROR.getMessage(), null);
}
finally{
if (context != null)
......@@ -96,10 +108,13 @@ public class LoginController {
context.dispose();
}
}
log.debug("Login command is finished");
return ResultUtil.result(ErrorCodes.ERROR, "login failed", null);
// log.debug("Login command is finished");
// return ResultUtil.result(ErrorCodes.ERROR, "login failed", null);
}
/*
* private void getMenu(IMenuItem menuItem, List<Map<String, String>>
* menuList) { Iterator<IMenuItem> iterator = menuItem.iterator(); while
......
......@@ -47,6 +47,12 @@ public class TokenInterceptor implements HandlerInterceptor {
return false;
}
//如果为后台直接调用交易,则直接跳过token验证,无需redis缓存
if (token.startsWith(Constants.BACKGROUND_FLAG)) {
return true;
}
JwtLogin login = JWT.unsign(token, JwtLogin.class);
if (login == null || (!userId.equals((login.getUserId())))) {
Result rt = new Result(ErrorCodes.LOGIN_TOKEN_CHECKERROR, "用户token或ID验证不通过", null);
......@@ -60,8 +66,8 @@ public class TokenInterceptor implements HandlerInterceptor {
responseMessage(response, response.getWriter(), rt);
return false;
}
//验证token是否一致 如果为后台直接调用交易,则直接跳过token验证
if( !token.startsWith(Constants.BACKGROUND_FLAG) && !token.equals(redisLoginInfo.getToken())){
//验证token是否一致
if(!token.equals(redisLoginInfo.getToken())){
Result rt = new Result(ErrorCodes.LOGIN_TOKEN_CHECKERROR, "token失效,该用户被强迫下线", null);
responseMessage(response, response.getWriter(), rt);
return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment