Commit 033e1c63 authored by zhouqian's avatar zhouqian

Merge branch 'master' of http://gitabc.xyqb.com/head_group/xyqb-user2

# Conflicts:
#	src/main/java/cn/quantgroup/xyqb/Constants.java
parent 126e147d
...@@ -112,6 +112,7 @@ public class UserController implements IBaseController { ...@@ -112,6 +112,7 @@ public class UserController implements IBaseController {
@RequestMapping("/test") @RequestMapping("/test")
public JsonResult test() { public JsonResult test() {
setChannelId(100L);
return JsonResult.buildSuccessResult("", getCurrentUser()); return JsonResult.buildSuccessResult("", getCurrentUser());
} }
......
...@@ -3,36 +3,41 @@ package cn.quantgroup.xyqb.filter; ...@@ -3,36 +3,41 @@ package cn.quantgroup.xyqb.filter;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder; import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.springframework.context.annotation.Configuration; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher; import org.springframework.util.AntPathMatcher;
import javax.servlet.*; import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter;
/** /**
* Created by 11 on 2016/12/29. * Created by 11 on 2016/12/29.
*/ */
@Component @Component
@Order(Ordered.HIGHEST_PRECEDENCE + 100) @Order(Ordered.HIGHEST_PRECEDENCE + 100)
@WebFilter(urlPatterns = "/*")
@WebInitParam(name = "pathPatterns", value = "/innerapi/**,/user/exist,/user/register,/user/login,/user/register/fast,/user/login/fast,/api/sms/**,/user/reset_password,/user/exist_check,/jr58/**,/app/login,/config/**,/api/**,/user/exists_token")
public class RequestFilter implements Filter { public class RequestFilter implements Filter {
private String [] pathPatterns; @Autowired
private ISessionService sessionService;
private AntPathMatcher matcher = new AntPathMatcher(); private AntPathMatcher matcher = new AntPathMatcher();
private static final String [] ALLOWED_PATTERNS = {
"/innerapi/**", "/user/exist","/user/register","/user/login","/user/register/fast",
"/user/login/fast", "/user/reset_password","/user/exist_check",
"/jr58/**","/app/login","/config/**","/api/**","/user/exists_token"
};
private static final String UNAUTH_RESULT = JSONObject.toJSONString(JsonResult.buildErrorStateResult("登录失败", null));
@Override @Override
public void init(FilterConfig filterConfig) throws ServletException { public void init(FilterConfig filterConfig) throws ServletException {
pathPatterns = filterConfig.getInitParameter("pathPatterns").split(",");
} }
@Override @Override
...@@ -40,24 +45,29 @@ public class RequestFilter implements Filter { ...@@ -40,24 +45,29 @@ public class RequestFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletResponse response = (HttpServletResponse) servletResponse;
String requestPath = getRequestPath(request); String requestPath = getRequestPath(request);
if(isMatch(requestPath)){ SessionStruct sessionStruct = null;
if(!isMatch(requestPath)){
//获取session信息,如果没有获取到session信息则返回错误信息 //获取session信息,如果没有获取到session信息则返回错误信息
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSession(); sessionStruct = XyqbSessionContextHolder.getXSession();
if(sessionStruct == null) { if(sessionStruct == null) {
response.setStatus(200); response.setStatus(200);
response.setHeader("Content-Type", "application/json;charset=utf-8"); response.setHeader("Content-Type", "application/json;charset=utf-8");
response.setHeader("Access-Control-Allow-Methods", "POST, GET"); PrintWriter writer = response.getWriter();
response.setHeader("Access-Control-Max-Age", "3600"); writer.print(JSONObject.toJSONString(UNAUTH_RESULT));
JsonResult result = JsonResult.buildSuccessResult("登录失败", null); writer.close();
response.getWriter().print(JSONObject.toJSONString(result));
return; return;
} }
} }
filterChain.doFilter(request, response); filterChain.doFilter(request, response);
sessionStruct = XyqbSessionContextHolder.getXSession();
if (sessionStruct == null) {
return;
}
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues());
} }
private boolean isMatch(String path) { private boolean isMatch(String path) {
for (String pattern : pathPatterns) { for (String pattern : ALLOWED_PATTERNS) {
if (matcher.match(path, pattern)) { if (matcher.match(path, pattern)) {
return true; return true;
} }
......
...@@ -13,5 +13,5 @@ public interface ISessionService { ...@@ -13,5 +13,5 @@ public interface ISessionService {
String findSessionIdByUserId(Long userId); String findSessionIdByUserId(Long userId);
String findSessionValueBySessionId(String sessionId); String findSessionValueBySessionId(String sessionId);
SessionStruct newSession(User user); SessionStruct newSession(User user);
void PersistSession(String token, SessionValue sessionValue); void persistSession(String token, SessionValue sessionValue);
} }
...@@ -38,12 +38,12 @@ public class SessionServiceImpl implements ISessionService{ ...@@ -38,12 +38,12 @@ public class SessionServiceImpl implements ISessionService{
String sessionValue = findSessionValueBySessionId(sessionId); String sessionValue = findSessionValueBySessionId(sessionId);
if(StringUtils.isEmpty(sessionValue)) { if(StringUtils.isEmpty(sessionValue)) {
sessionStruct = newSession(user); sessionStruct = newSession(user);
PersistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues());
} }
sessionStruct.setSid(sessionId); sessionStruct.setSid(sessionId);
}else { }else {
sessionStruct = newSession(user); sessionStruct = newSession(user);
PersistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues());
} }
return sessionStruct; return sessionStruct;
} }
...@@ -75,7 +75,7 @@ public class SessionServiceImpl implements ISessionService{ ...@@ -75,7 +75,7 @@ public class SessionServiceImpl implements ISessionService{
} }
@Override @Override
public void PersistSession(String token, SessionValue sessionValue){ public void persistSession(String token, SessionValue sessionValue){
Timestamp current = new Timestamp(System.currentTimeMillis()); Timestamp current = new Timestamp(System.currentTimeMillis());
sessionValue.setLastAccessTime(current); sessionValue.setLastAccessTime(current);
String json = JSON.toJSONString(sessionValue); String json = JSON.toJSONString(sessionValue);
......
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