<?xml version="1.0" encoding="UTF-8" ?> - <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd"> - <http access-denied-page="/403.jsp" auto-config="true"> <intercept-url pattern="/resources/images/**" filters="none" /> <intercept-url pattern="/resources/js/**" filters="none" /> <intercept-url pattern="/resources/css/**" filters="none" /> <intercept-url pattern="/resources/style/**" filters="none" /> <intercept-url pattern="/resources/flash/**" filters="none" /> <intercept-url pattern="/messagebroker/**" filters="none" /> <intercept-url pattern="/commons/**" filters="none" /> <intercept-url pattern="/login.jsp" filters="none" /> <intercept-url pattern="/index.jsp" filters="none" /> <intercept-url pattern="/servlet/jugServlet" filters="none" /> <intercept-url pattern="/security/user!userLogin.do" filters="none" /> <intercept-url pattern="/config/sysconfig!**" filters="none" /> <intercept-url pattern="/install_flash_player_10_active_x.exe" filters="none" /> <intercept-url pattern="/resources/PubwinKey.cab" filters="none" /> <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" default-target-url="/view/module/mainframe.jsp" always-use-default-target="true" /> <logout logout-url="/j_spring_security_logout" logout-success-url="/login.jsp" invalidate-session="true" /> <http-basic /> </http> - <!-- 获取用户权限信息 --> - <authentication-provider user-service-ref="userDetailsPoliceService"> <password-encoder ref="userPasswordEncoder" /> </authentication-provider> - <!-- 资源的控制 --> - <beans:bean id="resourceSecurityInterceptor" class="org.springframework.security.intercept.web.FilterSecurityInterceptor"> <beans:property name="authenticationManager" ref="authenticationManager" /> <beans:property name="accessDecisionManager" ref="accessDecisionManager" /> - <!-- 指定你的过滤器应该出现的位置 --> <custom-filter before="FILTER_SECURITY_INTERCEPTOR" /> <beans:property name="objectDefinitionSource" ref="secureResourceFilter" /> - <!-- 在第一次进行过安全检查之后就不会再做了 --> <beans:property name="observeOncePerRequest" value="false" /> </beans:bean> <beans:bean id="loggerListener" class="org.springframework.security.event.authentication.LoggerListener" /> <authentication-manager alias="authenticationManager" /> - <beans:bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased"> <beans:property name="allowIfAllAbstainDecisions" value="false" /> - <beans:property name="decisionVoters"> - <beans:list> <beans:bean class="org.springframework.security.vote.RoleVoter" /> <beans:bean class="org.springframework.security.vote.AuthenticatedVoter" /> </beans:list> </beans:property> </beans:bean> </beans:beans>
import java.util.Collection; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.ConfigAttributeDefinition; import org.springframework.security.intercept.web.FilterInvocation; import org.springframework.security.intercept.web.FilterInvocationDefinitionSource; import org.springframework.stereotype.Service; /** * * @author tangj */ @Service public class SecureResourceFilter implements FilterInvocationDefinitionSource { @Override public ConfigAttributeDefinition getAttributes(Object filter) throws IllegalArgumentException { FilterInvocation filterInvocation = (FilterInvocation) filter; // System.out.println(filterInvocation.getHttpRequest().getRemoteAddr()); UserInfo user=this.userService.getSessionUserInfo(); if(user!=null){ user.getEntity().setIpAddress(filterInvocation.getHttpRequest().getRemoteAddr()); } // Map<String, String> urlAuthorities = userDetails.getUrlMenuNameResources(); // FilterInvocation filterInvocation = (FilterInvocation) filter; // String requestURL = filterInvocation.getRequestUrl(); // String requestURlIndex = requestURL.split("\\?")[0]; // if (logger.isDebugEnabled()) { // logger.debug("requestURL::::" + requestURL); // logger.debug("requestURlIndex::::" + requestURlIndex); // } // if (requestURlIndex.indexOf("!") > 0) { // if (urlAuthorities.get(requestURlIndex) != null) { // } else { // // throw new // // AccessDeniedException("User has no AccessDeniedException:" + // // requestURL); // } // } else { // } return null; } @Override public Collection getConfigAttributeDefinitions() { return null; } @Override public boolean supports(Class clazz) { return true; } }