Question

Je voudrais pouvoir appeler une action d'authentification sur un contrôleur et si elle réussit, stocker les détails de l'utilisateur authentifié dans la session.

Cependant, je ne suis pas sûr de savoir comment garder les demandes à l'intérieur de la session que j'utilise RestSharp en tant que client détaché. Je dois obtenir en quelque sorte un retour clé du serveur sur autorisation réussie et pour chaque appel futur, vérifiez la clé avec celui stocké dans la session.

Comment puis-je assurer la RESTClient dans RestSharp envoie toutes les demandes futures avec l'ensemble des cookies appels de service correctement si à l'intérieur, la variable de session peut être récupérée correctement?

J'ai regardé le récipient à biscuits HttpFactory mais il ne semble pas y avoir de la documentation sur ce n'importe où.

Était-ce utile?

La solution 2

J'ai travaillé ceci à la fin. Fondamentalement créer un conteneur à biscuits, puis ajouter le cookie de session de la réponse dans le récipient de cookie. Toutes les demandes futures contiendront alors ce 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));
 }

Autres conseils

Si quelqu'un a un problème similaire, s'il vous plaît noter que ce qui précède est pas tout à fait nécessaire pour un simple « stocker mes cookies après chaque demande » problème. Jaffas approche ci-dessus fonctionne, mais vous pouvez tout simplement joindre un à votre magasin de cookies RESTClient et ont les biscuits être stockés automatiquement . Je sais que ce n'est pas une solution pour tout le monde, puisque vous pouvez stocker dédié uniquement les cookies. D'autre part, il rend votre vie plus facile pour tester un client REST! (Je les variables Jaffas pour faciliter):

        CookieContainer _cookieJar = new CookieContainer();
        var client = new RestClient("http://<test-server>/letteron"); //test URL
        client.CookieContainer = _cookieJar;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top