none
Sessão entre WebServices e Web Applications RRS feed

  • Pergunta

  • Prezados,

    Tenho aqui uma aplicação Java e outra .NET funcionando. Ambas acessam a mesma base de dados e relacionado aos usuários, acessam a mesma tabela de dados. Como eu controlo a sessão dos usuários no .NET por Session e a seção do Java tem o seu modo de seção, eu tenho que fazer com que as duas aplicações 'conversem' sobre usuário logado.

    Resumindo, quero pegar o usuário logado na aplicação do java, e entrar na minha aplicação .net sem rpecisar logar denovo. Isto se dá através de um link na aplicação Java que chama a aplicação .NET.

    Bom, o que fiz até agora foi criar um WebService dentro do meu projeto Web (do .NET) onde ele pega como parâmetro o login e já coloca em uma variável de sessão (Session["cdUsr"] ou HttpContext.Current.Session["cdUsr"], já tentei as duas). Testei o WebService no meu VisualStudio, coloquei o parametro um usuário, e depois abri outro browse com o link que seria aberto pelo JAVA, e funcionou.

    No JAVA, fiz um client para consumir o WebService do .NET. Funcionou também, consigo consumir e já até 'debuguei' confirmando que o WS pega o usuário e joga para dentro da variável de sessão.

    Mas!!!!!! Não funciona, quando abro a aplicação .NET depois a Session está nula. Já 'debuguei' também e comprovei que fica nula.
    Meu problema é este, alguém já passou algo parecido? No código do WS tem assim:

    [WebMethod(EnableSession=true)]

    E já tentei carregar a session destas duas formas: Session["cdUsr"] ou HttpContext.Current.Session["cdUsr"] , e nada.

    Desde já agradeço.

    quinta-feira, 5 de agosto de 2010 21:05

Todas as Respostas

  • Hi,

    Amigo, um conselho, usa uma base de dados para armazenar o status do usuario. assim voce vai saber se o usuario esta logado.

    olha um exemplo,

    http://nelsonborgesjr.spaces.live.com/blog/cns!A1C7FFFCFB9D3EE5!326.entry?sa=223747292

    Att,


    codeco Adriel Codeco Silva
    Email: adriel.silva@uppercase.com.br
    MSN: adrielcodeco@hotmail.com
    Blog: adrielcodeco.wordpress.com
    Uppercase – www.uppercase.com.br
    sexta-feira, 6 de agosto de 2010 22:47
    Moderador
  • Olha... não sei como funciona isso no java... mas quando faço uma aplicação windows forms consumindo um ws com sessão presciso definir manualmente um CookieContainer....

    Normalmente por isso não uso sessões em webservices que vão se comunicar com outras linguagens... nesse caso... eu coloco as informações no Cache... basicamente é

     

    Quando a aplicação java acessar o WS, primeiro metodo chama um token (Guid)... eu gravo um Cache com o nome desse token... ai todo metodo do WS q eu chamo no java ... passo esse token como um dos paramentros... e atraves dele eu pego as informações qe presciso no WS com o token com o mesmo nome...


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ? Se não da certo como voce esta fazendo... Tente fazer de um jeito totalmente diferente....
    sábado, 7 de agosto de 2010 01:40
    Moderador
  • Adriel, obrigado por responder.

    Eu não curto muito a idéia de controlar a sessão do usuário pelo banco. Eu não posso garantir que a aplicação vai atualizar o status dele quando o usuário realizar o logoff por exemplo. Alguns eventos adversos podem acontecer impedindo que esta sessão acabe, deixando assim meu sistema fica vulnerável.

    Além de que meus clientes têm acesso à base de dados, e eu realmente nãoq ueria deixar esta informação lá, visto que é um sessão cliente-servidor, e com tempo determinado.

    Mesmo assim agradeço a atenção.

    Sócrates

    segunda-feira, 9 de agosto de 2010 13:19
  • Olá Rui, desde já agradeço sua resposta.

    Eu poderia colocar este controle da sessão no coockie ou no cache, mas meus clientes "futucam (bisbilhotar)" muito a segurança da aplicação. E eles poderiam abrir arquivos de cockie o cache para ver.

    Se alguém souber como me ajduar nesta situação, agradeço!

    Sócrates

    segunda-feira, 9 de agosto de 2010 13:23
  • Socrates... mas o cache fica no servidor... a menos que eles tenham acesso ao mesmo não teria como eles mexerem no arquivo de cache... ja q a minha solução é para não usar cookies
    What would Brian Boitano do ?
    ((2B || !2B) is Question) ? Se não da certo como voce esta fazendo... Tente fazer de um jeito totalmente diferente....
    terça-feira, 10 de agosto de 2010 18:27
    Moderador