【问题标题】:spring security HttpSecurity春季安全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&lt;org.springframework.security.config.annotation.web.builders.HttpSecurity&gt;.ExpressionInterceptUrlRegistry,它不再有方法formLogin

知道我哪里出错了吗?

【问题讨论】:

    标签: java spring maven spring-mvc spring-security


    【解决方案1】:

    尝试改变顺序,让表单登录配置先出现:

    protected void configure(HttpSecurity http) throws Exception {
      http
        .formLogin()
            .loginPage("/login") 
            .permitAll()
            .and()
        .authorizeRequests()
            .anyRequest()
            .authenticated();
    }
    

    编辑:将“.and”更改为“.and()”

    【讨论】:

    • 谢谢埃里克。它就是这样工作的。我是 Java 世界的新手,知道为什么 spring 网站显示它的工作方式不同吗?
    • 这里很难看出 Spring Security 代码的意图,但在我看来,似乎存在无意的类型擦除,或​​者文档没有准确反映代码的预期工作方式。
    猜你喜欢
    • 2013-12-22
    • 2012-12-13
    • 2017-11-30
    • 2021-05-12
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多