Pregunta

Me gustaría poder llamar a una acción de autenticación en un controlador y, si tiene éxito, almacene los detalles del usuario autenticado en la sesión.

Sin embargo, no estoy seguro de cómo mantener las solicitudes dentro de la sesión, ya que estoy usando RestSharp como cliente separado. Necesito recuperar de alguna manera una clave del servidor en una autorización exitosa y luego para cada llamada futura, verifique la clave con la almacenada en la sesión.

¿Cómo me aseguro de que el RestClient en Restsharp envíe todas las solicitudes futuras con las cookies establecidas correctamente para que las llamadas de servicio interiores, la variable de sesión se puede recuperar correctamente?

He estado mirando el contenedor de cookies con httpfactory, pero no parece haber ninguna documentación sobre esto en ninguna parte.

¿Fue útil?

Solución 2

Al final trabajé con esto. Básicamente, cree un recipiente de cookies, luego agregue la cookie de sesión de la respuesta al recipiente de cookies. Todas las solicitudes futuras contendrán esta 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));
 }

Otros consejos

Si alguien tiene un problema similar, tenga en cuenta que lo anterior no es necesario para un problema simple de "almacenar mis cookies después de cada solicitud". El enfoque de Jaffas anteriormente funciona, pero simplemente puede adjuntar una cookestore a su descanso y hacer que las cookies se almacenen automáticamente. Sé que esta no es una solución para todos, ya que es posible que desee almacenar dedicado solo galletas. ¡Por otro lado, te facilita la vida de probar un cliente de descanso! (Usé variables de jaffas para facilitar):

        CookieContainer _cookieJar = new CookieContainer();
        var client = new RestClient("http://<test-server>/letteron"); //test URL
        client.CookieContainer = _cookieJar;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top