gpt4 book ai didi

ios - 使用 AFHTTPClient 进行 Cookie 身份验证

转载 作者:行者123 更新时间:2023-12-03 16:58:35 24 4
gpt4 key购买 nike

我的应用程序从使用基于表单的身份验证的网站提取数据。它需要透明地对登录页面的重定向使用react,并通过 POST 请求提供所请求的凭据。

我之前使用过 ASIHTTPREQUEST,然后检查 url 来查看是否已重定向到身份验证页面,如果是,则使用登录表单变量发送 POST 请求,然后再次发出原始请求。它可以工作,但有点破解。

我目前正在将代码转移到 AFNetworking 并想知道是否有更优雅的方法来实现此目的,也许注入(inject) auth header ?当发生重定向到身份验证页面并发布表单时,让 AFHTTPClient 触发身份验证委托(delegate)方法。这是一些伪代码:

- (void)requestFinished:(ASIHTTPRequest *)request {
if ([Connection isAuthURL:[request url]])
{
// If so have we just tried to login ?
if ( requestState == requestStateSendingLoginCredentials )
{
// Login Failed - tried to login & been redirected back to login page
[self requestFailed:request];
}
else
{
// We have been directed to login page after a page request
requestState = requestStateSendingLoginCredentials
[self postLoginForm:request];
}
}
else
{ // Not the authentication page
if ( requestState == requestStateSendingLoginCredentials )
{ // We must have successfully logged in
requestState = requestStateSuccessful;
// If it was a form we need to post again now were logged in.
if ([lastRequest isAForm])
{
// If original request that triggered the login was a POST request
// we have to re-send it.
[self requestURL:nil]; // This will send the last request again
return;
}
}
if (requestState == requestStateSuccessful)
{
[self processResponse:request];
}
}

最佳答案

让事情变得简单,并使用 HTTP 为您提供的功能。

HTTP 定义 status codes告诉您请求是否成功 (200) 或者是否需要授权 (401)。

将您的凭据存储在授权 HTTP header 中对于您的共享 AFHTTPClient 实例,您将为所有后续调用进行身份验证。

或者,如果这些方法没有执行此操作,您可以使用 AFURLConnection -setAuthenticationChallengeBlock: 来响应身份验证质询。

关于ios - 使用 AFHTTPClient 进行 Cookie 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10723809/

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