为什么没有设置安全性时,弹簧控制器会返回未授权状态

时间:2017-06-25 16:53:57

标签: spring spring-boot

我已经启动了一个spring boot应用程序。我添加了一个这样的休息控制器

@RestController
public class EmailController {

    @RequestMapping(value = "/2", method = RequestMethod.GET)
    public int getNumber() {
        return 2;
    }
}

当我调用网址http://localhost:8080/2时,我收到401异常。

{"timestamp":1498409208660,"status":401,"error": 
 "Unauthorized","message":"Full authentication is 
 required to access this resource", "path":"/2"}

我绝对没有任何安全保障。这是一个干净的春季启动项目!我为什么收到未经授权的例外。

4 个答案:

答案 0 :(得分:0)

您未配置身份验证(表单登录,HTTP Basic,...),因此使用了默认的AuthenticationEntryPoint,请参阅Spring Security API here

设置要使用的AuthenticationEntryPoint。

如果未指定authenticationEntryPoint(AuthenticationEntryPoint),则将使用defaultAuthenticationEntryPointFor(AuthenticationEntryPoint,RequestMatcher)。将使用第一个AuthenticationEntryPoint作为默认值,未找到匹配项。

如果未提供,则默认为Http403ForbiddenEntryPoint。 您可以将AuthenticationEntryPoint设置为@ksokol写入或配置身份验证,该身份验证定义AuthenticationEntryPoint。

答案 1 :(得分:0)

寻找解决方案的人。我把它添加到我的application.yml

security: 
  ignored: /**

答案 2 :(得分:0)

在主类中添加@EnableWebSecurity批注,它将忽略访问该应用程序的默认安全性。

示例代码如下:

@EnableWebSecurity
    @SpringBootApplication

    public class SampleApplication {
        SampleApplication (){}
        public static void main(String[] args) {
            SpringApplication.run(SampleApplication .class, args);
        }

答案 3 :(得分:0)

检查pom.xml文件中是否不包含依赖项spring-boot-starter-security