spring security 详解
spring-security.xml
<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-3.2.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.0.xsd "> <http pattern="/login" security="none"/> <http auto-config="true"> <headers> <frame-options policy="SAMEORIGIN"/> </headers> <http-basic /> <csrf request-matcher-ref="csrfSecurityRequestMatcher"/> </http> <beans:bean id="csrfSecurityRequestMatcher" class="com.curiousby.csrf.CsrfSecurityRequestMatcher"> <beans:property name="execludeUrls"> <beans:list> <beans:value>/test/</beans:value> <beans:value>/index/</beans:value> </beans:list> </beans:property> </beans:bean> <authentication-manager> </authentication-manager> </beans:beans>
/* * Project: .web * * File Created at 2017年3月15日 * * Copyright 2016 Corporation Limited. * All rights reserved. * * This software is the confidential and proprietary information of * curiousby Company. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license. */ package com.curiousby.csrf; import java.util.List; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.springframework.security.web.util.matcher.RequestMatcher; /** * @see com.curiousby.csrf.CsrfSecurityRequestMatcher * @Type CsrfSecurityRequestMatcher.java * @Desc * @author baoyou curiousby@163.com * @date 2017年3月15日 下午3:44:57 * @version */ public class CsrfSecurityRequestMatcher implements RequestMatcher { private Pattern allowedMethods = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)$"); @Override public boolean matches(HttpServletRequest request) { if (execludeUrls != null && execludeUrls.size() > 0) { String servletPath = request.getServletPath(); for (String url : execludeUrls) { if ("POST".equals(request.getMethod())) { if (servletPath.contains(url)) { System.out.println("---------排除掉的post方法--------" + servletPath); return false; } } } } return !allowedMethods.matcher(request.getMethod()).matches(); } /** * 需要排除的url列表 */ private List<String> execludeUrls; public List<String> getExecludeUrls() { return execludeUrls; } public void setExecludeUrls(List<String> execludeUrls) { this.execludeUrls = execludeUrls; } } /** * Revision history * ------------------------------------------------------------------------- * * Date Author Note * ------------------------------------------------------------------------- * 2017年3月15日 baoyou curiousby@163.com creat */
web.xml
<filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和微信捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!