package com.walker.web.security;
|
|
import org.springframework.security.access.SecurityMetadataSource;
|
import org.springframework.security.access.intercept.AbstractSecurityInterceptor;
|
import org.springframework.security.access.intercept.InterceptorStatusToken;
|
import org.springframework.security.web.FilterInvocation;
|
import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
|
|
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 java.io.IOException;
|
|
/**
|
* 目前看不需要重写该对象,已废弃。
|
* @date 2022-11-02
|
*/
|
@Deprecated
|
public class DefaultSecurityInterceptor extends AbstractSecurityInterceptor implements
|
Filter {
|
|
private FilterInvocationSecurityMetadataSource securityMetadataSource;
|
|
@Override
|
public void destroy() {
|
|
}
|
|
@Override
|
public void doFilter(ServletRequest request, ServletResponse response,
|
FilterChain chain) throws IOException, ServletException {
|
FilterInvocation fi = new FilterInvocation(request, response, chain);
|
invoke(fi);
|
}
|
|
@Override
|
public void init(FilterConfig arg0) throws ServletException {
|
|
}
|
|
@Override
|
public Class<?> getSecureObjectClass() {
|
return FilterInvocation.class ;
|
}
|
|
@Override
|
public SecurityMetadataSource obtainSecurityMetadataSource() {
|
return this.securityMetadataSource;
|
}
|
|
private void invoke(FilterInvocation fi) throws IOException, ServletException {
|
// object为FilterInvocation对象
|
//super.beforeInvocation(fi);源码
|
//1.获取请求资源的权限
|
//执行Collection<ConfigAttribute> attributes = SecurityMetadataSource.getAttributes(object);
|
//2.是否拥有权限
|
//this.accessDecisionManager.decide(authenticated, object, attributes);
|
InterceptorStatusToken token = super.beforeInvocation(fi);
|
try {
|
fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
|
} finally {
|
// super.afterInvocation(token, null );
|
super.finallyInvocation(token);
|
}
|
super.afterInvocation(token, (Object)null);
|
}
|
|
public void setSecurityMetadataSource(FilterInvocationSecurityMetadataSource securityMetadataSource) {
|
this.securityMetadataSource = securityMetadataSource;
|
}
|
|
// public void setMyAccessDecisionManager(CustomizeAccessDecisionManager accessDecisionManager) {
|
// super.setAccessDecisionManager(accessDecisionManager);
|
// }
|
}
|