| | |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.web.method.HandlerMethod; |
| | | import org.springframework.web.servlet.HandlerInterceptor; |
| | | import org.springframework.web.util.ContentCachingRequestWrapper; |
| | | |
| | | import javax.servlet.ServletInputStream; |
| | | import javax.servlet.http.Cookie; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletRequestWrapper; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.Arrays; |
| | | import java.util.Enumeration; |
| | | import java.io.BufferedReader; |
| | | import java.io.IOException; |
| | | import java.io.InputStreamReader; |
| | | import java.util.*; |
| | | |
| | | public class LoginHandlerInterceptor implements HandlerInterceptor { |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | /*try { |
| | | CustomHttpServletRequestWrapper requestWrapper = (CustomHttpServletRequestWrapper)request; |
| | | String body = requestWrapper.getBody(); |
| | | JSONObject object = JSONObject.parseObject(body); |
| | | if(object!=null){ |
| | | object.put("loginUserinfo",user); |
| | | requestWrapper.setBody( JSONObject.toJSONString(object)); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | }*/ |
| | | } else { |
| | | throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"未登录"); |
| | | } |
| | |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | private String getRequestBody(HttpServletRequest request) { |
| | | // 实现从request获取请求体的逻辑 |
| | | String body = null; |
| | | ServletInputStream inputStream = null; |
| | | try { |
| | | inputStream = request.getInputStream(); |
| | | String charset = request.getCharacterEncoding(); // 可能为null |
| | | if (charset == null) { |
| | | charset = "UTF-8"; // 默认编码 |
| | | } |
| | | BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, charset)); |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | String line = null; |
| | | while ((line = reader.readLine()) != null) { |
| | | stringBuilder.append(line + "\n"); |
| | | } |
| | | body = stringBuilder.toString(); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | return body; |
| | | } |
| | | |
| | | private LoginUserInfo checkLogin(String token) { |
| | |
| | | return user; |
| | | } |
| | | |
| | | |
| | | |
| | | // @Override |
| | | public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { |
| | | // UserContext.removeUser(); |
| | | } |
| | | |
| | | class RSARequestWrapper extends HttpServletRequestWrapper { |
| | | private Map<String, String[]> params = new HashMap<>(); |
| | | /** |
| | | * 必须要实现的构造方法 |
| | | * @param request |
| | | */ |
| | | public RSARequestWrapper(HttpServletRequest request) { |
| | | super(request); |
| | | //将参数表,赋予给当前的Map以便于持有request中的参数 |
| | | this.params.putAll(request.getParameterMap()); |
| | | } |
| | | /** |
| | | * 重载构造方法 |
| | | * @param request |
| | | * @param extendParams |
| | | */ |
| | | public RSARequestWrapper(HttpServletRequest request, Map<String, Object> extendParams) { |
| | | this(request); |
| | | //这里将扩展参数写入参数表 |
| | | addAllParameters(extendParams); |
| | | } |
| | | /** |
| | | * 在获取所有的参数名,必须重写此方法,否则对象中参数值映射不上 |
| | | * @return |
| | | */ |
| | | @SuppressWarnings({ "unchecked", "rawtypes" }) |
| | | @Override |
| | | public Enumeration<String> getParameterNames() { |
| | | return new Vector(params.keySet()).elements(); |
| | | } |
| | | /** |
| | | * 增加多个参数 |
| | | * @param otherParams 增加的多个参数 |
| | | */ |
| | | public void addAllParameters(Map<String, Object> otherParams) { |
| | | for (Map.Entry<String, Object> entry : otherParams.entrySet()) { |
| | | addParameter(entry.getKey(), entry.getValue()); |
| | | } |
| | | } |
| | | /** |
| | | * 增加参数 |
| | | * getParameterMap()中的类型是<String,String[]>类型的,所以这里要将其value转为String[]类型 |
| | | * @param name 参数名 |
| | | * @param value 参数值 |
| | | */ |
| | | public void addParameter(String name, Object value) { |
| | | if (value != null) { |
| | | if (value instanceof String[]) { |
| | | params.put(name, (String[]) value); |
| | | } else if (value instanceof String) { |
| | | params.put(name, new String[]{(String) value}); |
| | | } else { |
| | | params.put(name, new String[]{String.valueOf(value)}); |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | public String[] getParameterValues(String name) { |
| | | String[] access_token_user_id = params.get("access_token_user_id"); |
| | | String[] values = params.get(name);//getValue(name); |
| | | if (values == null || access_token_user_id==null){ |
| | | return null; |
| | | } |
| | | return values; |
| | | } |
| | | |
| | | @Override |
| | | public String getParameter(String name) { |
| | | String[] access_token_user_id = params.get("access_token_user_id"); |
| | | String[] values = params.get(name);//getValue(name); |
| | | if (values == null || access_token_user_id==null){ |
| | | return null; |
| | | } |
| | | return values[0]; |
| | | } |
| | | } |
| | | } |