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