浏览代码

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

wangxiaoming 7 年之前
父节点
当前提交
cf4bc2e6f1

+ 11 - 3
iamberry-wechat-web/src/main/java/com/iamberry/wechat/filters/WechatFilter.java

@@ -29,9 +29,9 @@ import com.iamberry.wechat.tools.NameUtils;
  * @date	2016年11月3日
  * @explain	完成和微信自动登录的过程,如果登录,那么通过,否则自动登录,完成Oauth过程
  */
-@WebFilter(value = { "/wechat/*","/pay/goOrderInfo","/common/wechat/*" })
+@WebFilter(value = { "/wechat/*","/pay/goOrderInfo" })
 public class WechatFilter implements Filter {
-	
+
 	private static Logger logger = LoggerFactory.getLogger(WechatFilter.class);
 
 	public void doFilter(ServletRequest request, ServletResponse response,
@@ -52,7 +52,15 @@ public class WechatFilter implements Filter {
 			
 			// 请求数据URI,并去掉"/" + 项目名称
 			String query = req.getQueryString();
-			String redirectUrl = req.getRequestURI().toString().replace(req.getContextPath(), "");
+			String urlstr = req.getRequestURI().toString();
+			String redirectUrl = urlstr.replace(req.getContextPath(), "");
+
+			// 如果没有登录,并且来自于微信,请求的链接并且为/wechat/qrcode/xxxx,那么放过,保证可以保持机器信息
+			String ua = req.getHeader("user-agent").toLowerCase();
+			if( ua.indexOf("micromessenger") < 0 && urlstr.indexOf("wechat/qrcode") > 0) {
+				chain.doFilter(req, resp);
+				return;
+			}
 
 			// 到此就准备开始授权的流程,并且保证转发后再次定位到当前请求页面
 			if (query != null) redirectUrl = redirectUrl + "?" + query;

+ 1 - 1
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/ProductInfoHandler.java

@@ -417,7 +417,7 @@ public class ProductInfoHandler {
 		// 重要操作,判断是否登陆,防止服务器重启
 		if (member == null || member.getUserOpenid() == null) { // 重新授权
 			request.getSession().setAttribute(NameUtils.redirectUrl, request.getRequestURI().replace(request.getContextPath(), ""));
-			String url = WechatUtils.getOpenIdFunction();response.sendRedirect(url);return;
+			return;
 		}
 		// 校验数据
 		if (productIdMd5 == null || "".equals(productIdMd5)) {

+ 1 - 5
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/RequestWechatPayHandler.java

@@ -67,11 +67,7 @@ public class RequestWechatPayHandler {
 		Member member = wechatUtils.getUserBySession(request);
 		
 		if (member == null || member.getUserOpenid() == null) {
-			String redirectUrl = request.getRequestURI().replace(request.getContextPath(), "");
-			request.getSession().setAttribute(NameUtils.redirectUrl, redirectUrl);
-			String url = WechatUtils.getOpenIdFunction();
-			mv.setViewName("redirect:" + url);
-			return mv;
+			return null;
 		}
 		// 清空数据
 		request.getSession().removeAttribute("cartIds");