代码优化
This commit is contained in:
@@ -200,14 +200,6 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
|
|||||||
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
|
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 地址访问接入验证
|
* 地址访问接入验证
|
||||||
@@ -255,6 +247,14 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
|
|||||||
boolean isLogin = WebUtils.isTrue(request, LOGIN_PARAM);
|
boolean isLogin = WebUtils.isTrue(request, LOGIN_PARAM);
|
||||||
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);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行登录方法
|
* 执行登录方法
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
@@ -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);
|
||||||
@@ -99,5 +94,10 @@ public class PermissionsFilter extends org.apache.shiro.web.filter.authz.Permiss
|
|||||||
WebUtils.issueRedirect(request, response, loginUrl);
|
WebUtils.issueRedirect(request, response, loginUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
|
||||||
|
PermissionsFilter.redirectToDefaultPath(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
|
||||||
|
return PermissionsFilter.redirectTo403Page(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
|
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
|
||||||
PermissionsFilter.redirectToDefaultPath(request, response);
|
PermissionsFilter.redirectToDefaultPath(request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
|
|
||||||
return PermissionsFilter.redirectTo403Page(request, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户权限过滤器
|
* 用户权限过滤器
|
||||||
@@ -15,15 +14,15 @@ import javax.servlet.ServletResponse;
|
|||||||
* @version 2017-03-22
|
* @version 2017-03-22
|
||||||
*/
|
*/
|
||||||
public class UserFilter extends org.apache.shiro.web.filter.authc.UserFilter {
|
public class UserFilter extends org.apache.shiro.web.filter.authc.UserFilter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
|
||||||
|
return PermissionsFilter.redirectTo403Page(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
|
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
|
||||||
PermissionsFilter.redirectToDefaultPath(request, response);
|
PermissionsFilter.redirectToDefaultPath(request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
|
|
||||||
return PermissionsFilter.redirectTo403Page(request, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
@Override
|
||||||
public void init(FilterConfig filterConfig) throws ServletException {}
|
public String getScheme() {
|
||||||
|
return "https";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
public StringBuffer getRequestURL() {
|
||||||
chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) {
|
StringBuffer sb = super.getRequestURL();
|
||||||
|
if ("http:".equals(sb.substring(0, 5))){
|
||||||
@Override
|
return sb.replace(0, 5, "https:");
|
||||||
public String getScheme() {
|
}else{
|
||||||
return "https";
|
return sb;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@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;
|
||||||
|
|||||||
Reference in New Issue
Block a user