Commit a30ca8e8 authored by cq990612's avatar cq990612

优化代码结构

parent e4a08e6e
......@@ -7,7 +7,6 @@ import cn.wisenergy.model.dto.OrganizationStructureDto;
import cn.wisenergy.model.dto.ResultUser;
import cn.wisenergy.model.vo.GetUserListVo;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
......@@ -27,10 +26,9 @@ public interface WorkUserService {
* @param loginName 登录名
* @param password 密码
* @param source 登录来源
* @param request
* @return
*/
ResultUser login(String loginName, String password, String source, HttpServletRequest request);
ResultUser login(String loginName, String password, String source);
/**
* 获取用户基础信息
......
......@@ -29,9 +29,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.*;
/**
......@@ -325,7 +322,7 @@ public class WorkUserServiceImpl implements WorkUserService {
}
@Override
public ResultUser login(String loginName, String password, String source, HttpServletRequest request) {
public ResultUser login(String loginName, String password, String source) {
log.info("WorkUserServiceImpl[]login[].input.param" + loginName + password + source);
if (StringUtils.isEmpty(loginName) || StringUtils.isEmpty(password)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
......@@ -352,34 +349,6 @@ public class WorkUserServiceImpl implements WorkUserService {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.THE_USER_NOT_MANAGER_PLASE_MANAGER_LOGIN);
}
// 限制单设备登录
HttpSession session = request.getSession();
ServletContext application = session.getServletContext();
// 获取存储登录
Map<String, String> loginMap = (Map<String, String>) application.getAttribute("loginMap");
Map<String, HttpSession> sessionMap = (Map<String, HttpSession>) application.getAttribute("sessionMap");
String id = String.valueOf(user.getId());
if (loginMap == null) {
loginMap = new HashMap<>();
sessionMap = new HashMap<>();
}
if (loginMap.get(id) == null) {
loginMap.put(id, session.getId());
System.out.println("session.getId() = " + session.getId());
sessionMap.put(session.getId(), session);
System.out.println("session = " + session);
} else {
String sessionId = loginMap.get(id); //根据id获取上一个用户的sessionId
HttpSession oldSession = sessionMap.get(sessionId); //根据sessionId获取上一个用户的session
oldSession.invalidate();
sessionMap.remove(oldSession.getId()); //根据sessionId删除旧session
sessionMap.put(session.getId(), session);
loginMap.remove(id); //移除id和oldSession对应关系
loginMap.put(id, session.getId()); //添加新的id和oldSession对应关系
}
application.setAttribute("loginMap", loginMap); // 添加两个HashMap到Application,重要
application.setAttribute("sessionMap", sessionMap);
}
// 限制审核的天数
......
......@@ -16,8 +16,6 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* @description:
* @author: nh
......@@ -50,12 +48,12 @@ public class WorkUserController extends BaseController {
@ApiImplicitParam(name = "source", value = "登录来源:PC/WAP", dataType = "string", required = true)
})
@GetMapping(value = "/login")
public Result<ResultUser> login(String loginName, String password, String source, HttpServletRequest request) {
public Result<ResultUser> login(String loginName, String password, String source) {
log.info("WorkUserController[]login[]input.param" + loginName + password + source);
if (StringUtils.isEmpty(loginName) || StringUtils.isEmpty(password) || StringUtils.isEmpty(source)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
ResultUser resultUser = workUserService.login(loginName, password, source, request);
ResultUser resultUser = workUserService.login(loginName, password, source);
return getResult(resultUser);
}
......
package cn.wisenergy.web.config.hanlder;
import cn.wisenergy.common.utils.exception.BASE_RESP_CODE_ENUM;
import cn.wisenergy.common.utils.exception.BaseCustomException;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* @description:
* @author: nh
* @create: 2021-04-01 10:44
**/
@Component
public class LoginFilter implements Filter {
private final static List<String> URI_LIST = Arrays.asList("/login","/webjars","/swagger-resources",
"/null","/v2","/swagger-ui.html","/work/collect","/work/order/addOrder","/work/order/examine","/work/order/getDeptNotOrderInfo",
"/work/order/getExamineApplets","/work/order/getProject","/work/order/noSubmit","/work/order/query","/work/order/reject",
"/changePassword","getUserInfo","/statistics/getCurrentMonthWorkTimeCollect","/statistics/getMonthlyWorkingHours");
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpSession session = httpServletRequest.getSession();
ServletContext application = session.getServletContext();
Map<String, String> loginMap = (Map<String, String>) application.getAttribute("loginMap");
// 请求接口不为登录再过滤
String requestURI = ((HttpServletRequest) request).getRequestURI();
for (String s : URI_LIST) {
if (requestURI.startsWith(s)) {
chain.doFilter(request,response);
return;
}
}
if (loginMap == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PLEASE_RE_LOGIN);
}
Collection<String> values = loginMap.values();
if (!values.contains(session.getId())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PLEASE_RE_LOGIN);
}
}
@Override
public void destroy() {
}
}
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