Spring Security - 配置HttpSecurity

时间:2017-05-18 15:50:07

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

我是Spring Security的新手,我正在尝试使用Spring Security创建一个登录表单。

这是必需的方案:

1)用户使用用户名 - 密码登录应用程序(请注意我使用的是Spring Security提供的默认登录页面) 2)如果登录正常,则用户转到eventList.jsp 3)如果登录是KO(错误的凭证),则显示错误

我的WebSecurityConfigurerAdapter配置:

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication().withUser("amdin").password("111111").roles("USER");
}

@Override
protected void configure(HttpSecurity http) throws Exception {

    http
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin().defaultSuccessUrl("/eventList");
}

错误1:如果我插入正确的凭据我看不到/ eventList,但我收到404(/spring-security-helloworld-annotation/WEB-INF/pages/login.jsp)。为什么我没有重定向到/ eventList? (pheraps因为/ eventList只接受我的RequestMapping注释中的GET?

@RequestMapping(value = {"/eventList"}, method = RequestMethod.GET)

错误2:如果我尝试“手动”转到/ eventList,通过在浏览器的URL末尾添加“eventList”,我可以访问所请求的页面而无需执行登录操作!我想要在不执行登录操作的情况下访问的URL只是登录页面本身!!!

.anyRequest().authenticated()行不应该允许这一切!!!

我怎样才能获得我想要的东西?

TY提前

1 个答案:

答案 0 :(得分:0)

正确的安全链如下所示:

          http
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/eventList")
                .permitAll()
                .and()
                .logout()
                .permitAll();

您忘记了permitAll()语句以及定义loginPage() 希望能帮助到你!如果你需要进一步的帮助,请给我一个下午。