spring security2

  <?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;
	}

	
	
}	

猜你喜欢

转载自rq2-79.iteye.com/blog/1593857