代码优化

This commit is contained in:
thinkgem
2024-01-26 14:43:03 +08:00
parent 14054a964f
commit 3db837d6d6
6 changed files with 48 additions and 67 deletions

View File

@@ -201,14 +201,6 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
return (!isLoginRequest(request, response) && isPermissive(mappedValue)); // 不验证登录状态,只验证登录请求 return (!isLoginRequest(request, response) && isPermissive(mappedValue)); // 不验证登录状态,只验证登录请求
} }
/**
* 跳转登录页时,跳转到默认首页
*/
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
PermissionsFilter.redirectToDefaultPath(request, response);
}
/** /**
* 地址访问接入验证 * 地址访问接入验证
*/ */
@@ -256,6 +248,14 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
return super.isLoginSubmission(request, response) || isLogin; return super.isLoginSubmission(request, response) || isLogin;
} }
/**
* 跳转登录页时,跳转到默认首页
*/
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
PermissionsFilter.redirectToDefaultPath(request, response);
}
/** /**
* 执行登录方法 * 执行登录方法
*/ */

View File

@@ -19,15 +19,17 @@ import javax.servlet.http.HttpServletRequest;
*/ */
public class InnerFilter extends AccessControlFilter { public class InnerFilter extends AccessControlFilter {
private static final String[] prefixes = Global.getPropertyToArray("shiro.innerFilterAllowRemoteAddrs", "127.0.0.1");
@Override @Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception {
boolean result = false; boolean result = false;
String[] prefixes = (String[])mappedValue; String[] prefixes = (String[])mappedValue;
if (prefixes == null){ if (prefixes == null){
prefixes = Global.getPropertyToArray("shiro.innerFilterAllowRemoteAddrs", "127.0.0.1"); prefixes = InnerFilter.prefixes;
} }
if (prefixes != null && request instanceof HttpServletRequest){ if (prefixes != null && request instanceof HttpServletRequest){
String ip = request.getRemoteAddr(); String ip = request.getRemoteAddr() + "]";
for (String prefix : prefixes){ for (String prefix : prefixes){
result = StringUtils.startsWithIgnoreCase(ip, StringUtils.trim(prefix)); result = StringUtils.startsWithIgnoreCase(ip, StringUtils.trim(prefix));
if (result){ if (result){

View File

@@ -29,11 +29,6 @@ import com.jeesite.common.web.http.wrapper.GetHttpServletRequestWrapper;
*/ */
public class PermissionsFilter extends org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter { public class PermissionsFilter extends org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter {
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
PermissionsFilter.redirectToDefaultPath(request, response);
}
@Override @Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException { protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
return PermissionsFilter.redirectTo403Page(request, response); return PermissionsFilter.redirectTo403Page(request, response);
@@ -100,4 +95,9 @@ public class PermissionsFilter extends org.apache.shiro.web.filter.authz.Permiss
} }
} }
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
PermissionsFilter.redirectToDefaultPath(request, response);
}
} }

View File

@@ -4,10 +4,9 @@
*/ */
package com.jeesite.common.shiro.filter; package com.jeesite.common.shiro.filter;
import java.io.IOException;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
import java.io.IOException;
/** /**
* 角色权限过滤器 * 角色权限过滤器
@@ -16,14 +15,14 @@ import javax.servlet.ServletResponse;
*/ */
public class RolesFilter extends org.apache.shiro.web.filter.authz.RolesAuthorizationFilter { public class RolesFilter extends org.apache.shiro.web.filter.authz.RolesAuthorizationFilter {
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
PermissionsFilter.redirectToDefaultPath(request, response);
}
@Override @Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException { protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
return PermissionsFilter.redirectTo403Page(request, response); return PermissionsFilter.redirectTo403Page(request, response);
} }
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
PermissionsFilter.redirectToDefaultPath(request, response);
}
} }

View File

@@ -4,10 +4,9 @@
*/ */
package com.jeesite.common.shiro.filter; package com.jeesite.common.shiro.filter;
import java.io.IOException;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
import java.io.IOException;
/** /**
* 用户权限过滤器 * 用户权限过滤器
@@ -16,14 +15,14 @@ import javax.servlet.ServletResponse;
*/ */
public class UserFilter extends org.apache.shiro.web.filter.authc.UserFilter { public class UserFilter extends org.apache.shiro.web.filter.authc.UserFilter {
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
PermissionsFilter.redirectToDefaultPath(request, response);
}
@Override @Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException { protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
return PermissionsFilter.redirectTo403Page(request, response); return PermissionsFilter.redirectTo403Page(request, response);
} }
@Override
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
PermissionsFilter.redirectToDefaultPath(request, response);
}
} }

View File

@@ -4,23 +4,16 @@
*/ */
package com.jeesite.modules.config.web; package com.jeesite.modules.config.web;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/** /**
* 将请求协议转换为 https * 将请求协议转换为 https
* @author ThinkGem * @author ThinkGem
@@ -34,35 +27,23 @@ public class SchemeHttpsConfig {
public FilterRegistrationBean<Filter> schemeFilterRegistrationBean() { public FilterRegistrationBean<Filter> schemeFilterRegistrationBean() {
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>(); FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
bean.setOrder(Ordered.HIGHEST_PRECEDENCE); bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
bean.setFilter(new Filter() { bean.setFilter((request, response, chain) -> {
chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) {
@Override
public String getScheme() {
return "https";
}
@Override @Override
public void init(FilterConfig filterConfig) throws ServletException {} public StringBuffer getRequestURL() {
StringBuffer sb = super.getRequestURL();
@Override if ("http:".equals(sb.substring(0, 5))){
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { return sb.replace(0, 5, "https:");
chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) { }else{
return sb;
@Override
public String getScheme() {
return "https";
} }
}
@Override }, response);
public StringBuffer getRequestURL() {
StringBuffer sb = super.getRequestURL();
if ("http:".equals(sb.substring(0, 5))){
return sb.replace(0, 5, "https:");
}else{
return sb;
}
}
}, response);
}
@Override
public void destroy() {}
}); });
bean.addUrlPatterns("/*"); bean.addUrlPatterns("/*");
return bean; return bean;