gpt4 book ai didi

java - Spring Boot 安全性 - postman 使用 REST 但curl 命令失败

转载 作者:行者123 更新时间:2023-11-30 05:49:31 24 4
gpt4 key购买 nike

我是 Spring Boot 新手,尤其是 Spring Security。我正在对我的简单 REST 服务进行一些测试。

有两个: http://localhost:8080/sayhellohttp://localhost:8080/api/sayhello

我的安全配置是这样的:

http.httpBasic().and()
.authorizeRequests()
.antMatchers("/api/**")
.hasRole("USER")
.anyRequest()
.fullyAuthenticated();

我预计http://localhost:8080/api/sayhello进行身份验证,而不是 http://localhost:8080/sayhello

当我测试http://localhost:8080/sayhello时在 postman 上,我看到了正确的消息,即“嗨!”。

但是当我运行这个curl命令curl -i -X GET http://localhost:8080/sayhello/时,我得到了这个:

HTTP/1.1 401
Set-Cookie: JSESSIONID=DDB9A6FF9CBCB9811E141FF17A5D40CB; Path=/; HttpOnly
WWW-Authenticate: Basic realm="Realm"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 15 Jan 2019 09:11:09 GMT

{"timestamp":"2019-01-15T09:11:09.509+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/sayhello/"}

请问我做错了什么?

谢谢。

最佳答案

默认情况下,您的所有网址都会在 Spring-Security 中进行身份验证。

使用过的行

http.httpBasic().and()
.authorizeRequests()
.antMatchers("/api/**") // all url with /api/** will be authenticated having role of USER.
.hasRole("USER")
.anyRequest()
.fullyAuthenticated();

这里

            .antMatchers("/api/**")
.hasRole("USER")

所有 url 都被 Spring-security 过滤器阻止。但匹配 /api/** 模式的 api 必须具有角色 USER。除了不匹配的 url 必须通过 Spring-security 过滤器进行验证。

你应该这样使用。

  .antMatchers("/sayhello/**").permitAll();

或者

  .anyRequest().permitAll()

将此行添加到您的 httpAuthentication 将允许您匿名访问 api http://localhost:8080/sayhello

或者您可以像这样重写configure(WebSecurity web)..(这也可以)。

@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/sayhello");
}

谢谢你..

关于java - Spring Boot 安全性 - postman 使用 REST 但curl 命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54195838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com