|
@@ -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;
|