Resetting basic authentication credentials with AF

2019-03-19 16:27发布

问题:

I am writing a REST client (with AFNetworking) and need the ability to trigger the creation of a new session within a single instance of an application.

In other words, I would like to:
1 - Authenticate with server
2 - Do some REST calls
3 - Simulate "Log out"
4 - Re-authenticate with server
5 - Do some more REST calls

AFNetworking is great with making that initial authentication and REST calls, but I can't figure out how I would clear the session and "reset" the connection within the same instance.

When I used ASIHTTP, I just did:
[ASIHTTPRequest clearSession];

Is there a way to do something similar with AFNetworking?

回答1:

Use AFHTTPClient (see the API client in the example project).

Credentials can be set with -setAuthorizationHeaderWithUsername:password:. Each request created from that HTTP client will have an Authorization HTTP header, kind of like a browser session.

When the user logs out, or you want to clear credentials, do -clearAuthorizationHeader.



回答2:

Even simpler.

[request setHTTPShouldHandleCookies:NO];


回答3:

Rest calls as far as I know are not session based. Meaning you can't simulate an authentication and log-out session in a particular call. What I think you can do is to Authenticate for every call made to the end point. So for every end point(Method), you authenticate the caller. I think that's the bets you can do in a restful system.