春季安全HttpSecurity
Posted
技术标签:
【中文标题】春季安全HttpSecurity【英文标题】:spring security HttpSecurity 【发布时间】:2014-02-02 18:27:27 【问题描述】:我正在关注这里的 Spring Security 指南,http://docs.spring.io/spring-security/site/docs/3.2.0.RELEASE/reference/htmlsingle/#jc-httpsecurity
我在我的pom.xml
中设置了这些
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
在我的安全配置类中
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
我有
protected void configure(HttpSecurity http) throws Exception
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
HttpSecurity
有方法formLogin
,但其他以authorizeRequests()
开头的调用返回类型org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer<org.springframework.security.config.annotation.web.builders.HttpSecurity>.ExpressionInterceptUrlRegistry
,它不再有方法formLogin
。
知道我哪里出错了吗?
【问题讨论】:
【参考方案1】:尝试改变顺序,让表单登录配置先出现:
protected void configure(HttpSecurity http) throws Exception
http
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.authorizeRequests()
.anyRequest()
.authenticated();
编辑:将“.and”更改为“.and()”
【讨论】:
谢谢埃里克。它就是这样工作的。我是 Java 世界的新手,知道为什么 spring 网站显示它的工作方式不同吗? 这里很难看出 Spring Security 代码的意图,但在我看来,似乎存在无意的类型擦除,或者文档没有准确反映代码的预期工作方式。以上是关于春季安全HttpSecurity的主要内容,如果未能解决你的问题,请参考以下文章