Persistência de Session

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Persistência de Session

cberaldi
Boa tarde a todos, sou novo no forum e no mundo Lua, e estou desenvolvendo uma aplicação de autenticação que trabalha com o LuaSoap e preciso da informação da session ou cookie para persistir nas requisições, alguem sabe me dizer como fazer isso ??

--
Lua BR - http://groups.google.com/group/lua-br
Reply | Threaded
Open this post in threaded view
|

Re: Persistência de Session

Joao Sinfaes
Ótima questão levantada, tambem fico no aguardo de alguem que entenda.
Pois estou criando uma aplicação tambem baseada no uso de Cookies e to meio perdido! rs

De: cberaldi <[hidden email]>
Para: [hidden email]
Enviadas: Terça-feira, 7 de Agosto de 2012 16:33
Assunto: [lua-br] Persistência de Session

Boa tarde a todos, sou novo no forum e no mundo Lua, e estou desenvolvendo uma aplicação de autenticação que trabalha com o LuaSoap e preciso da informação da session ou cookie para persistir nas requisições, alguem sabe me dizer como fazer isso ??

--
Lua BR - http://groups.google.com/group/lua-br


--
Lua BR - http://groups.google.com/group/lua-br
Reply | Threaded
Open this post in threaded view
|

Re: Persistência de Session

Henrique Magarotto
In reply to this post by cberaldi
Quando você efetua uma requisição para um servidor HTTP e ele cria um cookie, ele retorna um campo extra no cabeçalho HTTP com os dados do cookie.
Para utilizar a sessão criada, o cliente de reenviar o cookie criado.

Por exemplo, quando o server cria o cookie ele responde (por exemplo) no header HTTP:
set-cookie: server_cookie_name=server_cookie_value; Max-Age=60; HttpOnly

Para o client utilizar a sessão criada (relacionada com o cookie) as requisições subsequentes devem possuir o seguinte campo no header HTTP:
cookie: server_cookie_name=server_cookie_value

Segue os RFCs:

O server pode atualizar o cookie a cada request, então isso deve ser verificado.

Acho que vc deve começar com testes de como manipular os headers HTTP enviados e recebidos com o LuaSOAP.

Pelo que vi o LuaSOAP usa o LuaSocket.
No LuaSocket é facil manipular o header enviado e recebido (http://w3.impa.br/~diego/software/luasocket/http.html).
Não vi como fazer isso no LuaSOAP.

Espero ter ajudado.

Att.
Henrique


Em 7 de agosto de 2012 16:33, cberaldi <[hidden email]> escreveu:
Boa tarde a todos, sou novo no forum e no mundo Lua, e estou desenvolvendo uma aplicação de autenticação que trabalha com o LuaSoap e preciso da informação da session ou cookie para persistir nas requisições, alguem sabe me dizer como fazer isso ??

--
Lua BR - http://groups.google.com/group/lua-br

--
Lua BR - http://groups.google.com/group/lua-br
Reply | Threaded
Open this post in threaded view
|

Re: Persistência de Session

Henrique Magarotto
Dando uma olhada aqui acho que da para enviar o cookie através do campo "headers" do método call:

local client = require "soap.client"
local ns, meth, ent = client.call {url = "http://soap.4s4c.com/ssss4c/soap.asp", headers = {...}, ... }

E para pegar o cookie retornado pelo server acho que será necessário uma modificação no arquivo "client.lua":

$ diff -u client.lua.bkp client.lua
--- client.lua.bkp      2012-08-07 19:33:14.190777661 -0300
+++ client.lua  2012-08-07 19:33:31.158777037 -0300
@@ -95,7 +95,7 @@
        local ok, error_or_ns, method, result = pcall(soap.decode, body)
        assert(ok, "Error while decoding: "..tostring(error_or_ns).."\n\n"..tostring(body))
 
-       return error_or_ns, method, result
+       return error_or_ns, method, result, headers
 end
 
 ---------------------------------------------------------------------

e ao chamar o call:
local ns, meth, ent, headers = client.call ....

Não testei nada aqui, mas acho que este é um caminho :D

Att
Henrique


Em 7 de agosto de 2012 19:14, Henrique Magarotto <[hidden email]> escreveu:
Quando você efetua uma requisição para um servidor HTTP e ele cria um cookie, ele retorna um campo extra no cabeçalho HTTP com os dados do cookie.
Para utilizar a sessão criada, o cliente de reenviar o cookie criado.

Por exemplo, quando o server cria o cookie ele responde (por exemplo) no header HTTP:
set-cookie: server_cookie_name=server_cookie_value; Max-Age=60; HttpOnly

Para o client utilizar a sessão criada (relacionada com o cookie) as requisições subsequentes devem possuir o seguinte campo no header HTTP:
cookie: server_cookie_name=server_cookie_value

Segue os RFCs:

O server pode atualizar o cookie a cada request, então isso deve ser verificado.

Acho que vc deve começar com testes de como manipular os headers HTTP enviados e recebidos com o LuaSOAP.

Pelo que vi o LuaSOAP usa o LuaSocket.
No LuaSocket é facil manipular o header enviado e recebido (http://w3.impa.br/~diego/software/luasocket/http.html).
Não vi como fazer isso no LuaSOAP.

Espero ter ajudado.

Att.
Henrique


Em 7 de agosto de 2012 16:33, cberaldi <[hidden email]> escreveu:

Boa tarde a todos, sou novo no forum e no mundo Lua, e estou desenvolvendo uma aplicação de autenticação que trabalha com o LuaSoap e preciso da informação da session ou cookie para persistir nas requisições, alguem sabe me dizer como fazer isso ??

--
Lua BR - http://groups.google.com/group/lua-br


--
Lua BR - http://groups.google.com/group/lua-br