对于最新的稳定版本,请使用 Spring Security 7.0.4spring-doc.cadn.net.cn

消息迁移

默认使用 PathPatternMessageMatcher

在Spring Security 7中,SimpDestMessageMatcher 不再受支持,并且默认将使用 PathPatternMessageMatcherspring-doc.cadn.net.cn

要检查您对此变化的准备情况,可以发布此bean:spring-doc.cadn.net.cn

@Bean
PathPatternMessageMatcherBuilderFactoryBean messageMatcherBuilder() {
	return new PathPatternMessageMatcherBuilderFactoryBean();
}
@Bean
fun messageMatcherBuilder(): PathPatternMessageMatcherBuilderFactoryBean {
    return PathPatternMessageMatcherBuilderFactoryBean()
}
<b:bean class="org.springframework.security.config.web.messaging.PathPatternMessageMatcherBuilderFactoryBean"/>

这将告诉Spring Security DSL使用PathPatternMessageMatcher来处理其构造的所有消息匹配器。spring-doc.cadn.net.cn

在 7 版本中,PathMatcher 的使用已不再受支持。 如果您正在使用 PathMatcher 来更改路径分隔符或更改消息匹配的大小写敏感性,请可以改为配置 PathPatternParser 来实现这些功能,例如:spring-doc.cadn.net.cn

@Bean
PathPatternMessageMatcherBuilderFactoryBean messageMatcherBuilder() {
	PathPatternParser pathPatternParser = new PathPatternParser();
	pathPatternParser.setCaseSensitive(false);
	// use . as path separator
	pathPatternParser.setPathOptions(PathContainer.Options.MESSAGE_ROUTE);
	return new PathPatternMessageMatcherBuilderFactoryBean(pathPatternParser);
}
@Bean
fun messageMatcherBuilder(): PathPatternMessageMatcherBuilderFactoryBean {
    val pathPatternParser = PathPatternParser()
	pathPatternParser.setCaseSensitive(false)
    // use . as path separator
	pathPatternParser.setPathOptions(PathContainer.Options.MESSAGE_ROUTE)
    return PathPatternMessageMatcherBuilderFactoryBean(pathPatternParser)
}
<b:bean class="org.springframework.web.util.pattern.PathPatternParser">
    <b:property name="caseSensitive" value="false"/>
    <!-- use . as path separator -->
    <b:property name="pathOptions" value="#{T(org.springframework.http.server.PathContainer.Options).MESSAGE_ROUTE"/>
</b:bean>
<b:bean class="org.springframework.security.config.web.messaging.PathPatternMessageMatcherBuilderFactoryBean"/>