Domanda

Mi piacerebbe essere in grado di chiamare un'azione di autenticazione su un controller e se ci si riesce, memorizzare i dettagli degli utenti autenticati nella sessione.

Tuttavia, non sono sicuro di come mantenere le richieste all'interno della sessione come sto usando RestSharp come un client indipendente. Ho bisogno di ottenere in qualche modo un back chiave dal server sull'autorizzazione di successo e poi per ogni chiamata futuro, controllare la chiave con quella memorizzata nella sessione.

Come faccio a garantire la RestClient in RestSharp invia tutte le richieste future con il set di cookie correttamente le chiamate di servizio in modo da dentro, la variabile di sessione possono essere recuperate correttamente?

Sono stato a guardare il contenitore cookie con HttpFactory ma ci non sembra essere alcuna documentazione su questo ovunque.

È stato utile?

Soluzione 2

ho lavorato questo fuori alla fine. Fondamentalmente creare un contenitore di biscotto, quindi aggiungere il cookie di sessione dalla risposta nel contenitore dei cookie. Tutte le richieste future saranno quindi contenere questo cookie.

 var sessionCookie = response.Cookies.SingleOrDefault(x => x.Name == "ASP.NET_SessionId");
 if (sessionCookie != null)
 {
    _cookieJar.Add(new Cookie(sessionCookie.Name, sessionCookie.Value, sessionCookie.Path, sessionCookie.Domain));
 }

Altri suggerimenti

Se qualcuno sta avendo un problema simile, si prega di notare che quanto sopra non è del tutto necessario per un semplice "memorizzare i miei biscotti dopo ogni richiesta" problema. Jaffas approccio di cui sopra funziona, ma si può semplicemente collegare un CookieStore al RestClient e hanno i cookie essere memorizzati automaticamente . So che questo non è una soluzione per tutti, dal momento che si potrebbe desiderare di memorizzare dedicato i cookie solo. D'altra parte rende la vita più facile per testare un client REST! (Io ho usato le variabili jaffas per facilità):

        CookieContainer _cookieJar = new CookieContainer();
        var client = new RestClient("http://<test-server>/letteron"); //test URL
        client.CookieContainer = _cookieJar;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top