gpt4 book ai didi

java - 如何在 api url 中传递用户名和密码

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:44 25 4
gpt4 key购买 nike

我有一个由 Spring Security 保护的应用程序。我添加了BasicAuthInterceptor。但是当我向服务器请求rest api url时,我看到的是html登录页面而不是json。所以我想也许在请求的 api 的 url 中传递用户名和密码。但我不知道如何。非常感谢任何想法/建议。干杯!

这是我的BasicAuthInterceptor

public class BasicAuthInterceptor implements ClientHttpRequestInterceptor {

private static final Logger logger = LoggerFactory.getLogger( BasicAuthInterceptor.class );

private final String username;
private final String password;

public BasicAuthInterceptor( String username, String password ) {
this.username = username;
this.password = password;
}

@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] bytes, ClientHttpRequestExecution clientHttpRequestExecution) throws IOException {

// code here ...
}

并在 MAIN() 中使用客户端应用程序进行测试:

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

//Get a new Rest-Template
final RestTemplate template = new RestTemplate();

//Create and initialize the interceptor
final List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
interceptors.add( new BasicAuthInterceptor( "admin", "admin" ) );
template.setInterceptors( interceptors );

//Do your request as normal
final String helloResponse = template.getForObject( "http://localhost:9000/api/brands", String.class );

System.out.println(helloResponse);
}

最佳答案

这取决于您在服务器端使用的身份验证类型。

例如,对于基本身份验证,您需要向请求 header 添加一个名为 Authorization 且包含此内容的特定 header

基本[TOKEN]

其中[TOKEN]代表

Base64(用户名:密码)

即,用户名和密码由“:”连接,并全部以 Base64 编码。(https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side)

所有这些都应该在方法 intercept 中完成(在您的代码中)。

您可以通过 HttpRequest 对象访问 header (请参阅文档@ https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/HttpRequest.html)

如果您使用的身份验证与基本身份验证不同,则只需 Google 并搜索要添加的正确 header 即可。

关于java - 如何在 api url 中传递用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34173263/

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