|
@@ -0,0 +1,40 @@
|
|
|
|
|
+package com.goafanti.core.shiro.filter;
|
|
|
|
|
+
|
|
|
|
|
+import javax.servlet.ServletRequest;
|
|
|
|
|
+import javax.servlet.ServletResponse;
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
+
|
|
|
|
|
+import org.apache.shiro.web.filter.AccessControlFilter;
|
|
|
|
|
+import org.apache.shiro.web.util.WebUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
+
|
|
|
|
|
+import com.goafanti.common.utils.LoggerUtils;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+public class DeviceFilter extends AccessControlFilter{
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ShiroFilterUtils shiroFilterUtils;
|
|
|
|
|
+
|
|
|
|
|
+ @Value(value = "${app.mobile.website}")
|
|
|
|
|
+ private String mobileWebsite;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue)
|
|
|
|
|
+ throws Exception {
|
|
|
|
|
+ if (shiroFilterUtils.isMobileDevice((HttpServletRequest)request) || request.getServerName().startsWith("m.")){
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
|
|
|
|
|
+ if (shiroFilterUtils.isMobileDevice((HttpServletRequest)request) || request.getServerName().startsWith("m.")){
|
|
|
|
|
+ LoggerUtils.debug(getClass(), "当前访问为移动设备");
|
|
|
|
|
+ WebUtils.issueRedirect(request, response, mobileWebsite,null,false);
|
|
|
|
|
+ }
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|