如何在Spring Security中配置未授权请求的api和ui

时间:2018-03-03 00:18:27

标签: spring-boot spring-security spring-security-oauth2

我对Spring Security非常陌生,所以请原谅任何缺乏清晰度的内容。我有这个带有Java配置的Spring启动项目。

该项目有一个UI (我的应用程序),其中包含登录表单和Rest API (my-app / api)。我想用Spring Security保护它们,并且我成功地保护了UI部分。当未经授权的用户尝试请求禁用资源时,会重定向到登录页面。我的问题是当我尝试保护Rest API时。通过以下设置,我保护UI部分。

 http
            .authorizeRequests()
            .antMatchers("/login", "/about", "/resource/**").permitAll()
            .anyRequest().authenticated()
        .and()
            .formLogin() 
            .loginPage("/login") 
            .permitAll()
            .failureUrl("/login?error=true")
        .and()
            .logout()
            .logoutSuccessUrl("/login")

UI受到良好保护,注销和登录错误重定向到登录页面,唯一需要注意的是禁止访问API,返回登录HTML文本。 使用下一个设置

 http.antMatcher("/my-app/**")
            .authorizeRequests().anyRequest().authenticated();

只有API受到保护,并且在任何未经授权的请求中,它会返回带有错误的JSON(这是所需的行为),并且没有重定向/ html文本打印。我知道我的API已通过身份验证,因为我使用了承载令牌(Oauth2密码授予类型)并且运行良好。

我在混合这两个设置时遇到问题,以获得结果。

欢迎提出任何建议。

1 个答案:

答案 0 :(得分:0)