none
Response.Redirect ou Server.Transfer com formsauthentication RRS feed

  • Pergunta

  • Olá Pessoal, tudo bem?

    Estou com um problema e não estou sabendo como resolver.

    Utilizo formsauthentication   . Até aí sem problemas. O meu problema é:

    Dados:

    URL:

    www.meusite.com.br

    URL SSL

    https://ssl-w03dnnxxxx.websiteseguro.com/meusite

    A url ssl está no mesmo servidor que está rodando a aplicação (www.meusite.com.br)

    1 - quero fazer um server.transfer para o uma página usando a url ssl, assim:

    Server.Transfer("https://ssl-w03dnnxxxx.websiteseguro.com/meusite/paginaSegura.aspx");

    O que aconcete é que a aplicação vai para a página de login e não consigo acessar a página que eu desejo (paginaSegura.aspx) que está na url ssl.

    Existe alguma forma deste problema ser contornado?

     

    Um grande abraço a todos,

    Carlos Junior


    Carlos Junior
    quinta-feira, 27 de maio de 2010 20:52

Todas as Respostas

  • Voltou para a página de login porque o Server.Transfer tenta buscar a url interna no seu site. Como você passou uma url que para o site não existe, ele concluiu ser erro e voltou para o login.

    Tente usar o Response.Redirect("url");

    Fkaeh - Gambi.NET® Framework Certificated 2010
    ----------------------------------------------
    Se tiver paciência para avaliar, agradeço: http://premio.clubedeautores.com.br/web/site_premio/votar.php?id=12633
    sexta-feira, 28 de maio de 2010 12:41
  • Olá Fraeh, tudo bem?

    A url existe, o que está acontecendo é que devido ao formsauthentication a aplicação está achando que se trata de tentar acessar uma página sem estar logado no site.

     

    Um abraço e obrigado.


    Carlos Junior
    sexta-feira, 28 de maio de 2010 16:21
  • Olá Carlos....

    você alguma validação na 'paginaSegura.aspx' para verificar se o usuario está logado ou isso é feito automaticamente ?
    por que se é você quem faz a verificação, você poder passar um paremetro na url indicando que o usuario está logado.

    Espero ter ajudado.

    sexta-feira, 28 de maio de 2010 17:41
  • Olá Guilhere, tudo bem?

     

    Me perdoe a ignorância, mas como posso enviar este dado.

     

    Abraços

    Carlos Junior


    Carlos Junior
    sexta-feira, 28 de maio de 2010 18:23
  • Olá Carlos,

     

    tudo bem sim e você ?

    Então cara, você pode fazer o seguinte:

    Server.Transfer("https://ssl-w03dnnxxxx.websiteseguro.com/meusite/paginaSegura.aspx?logado=sim");

    >> Nome do Parametro: logado; Valor do Parametro: sim

    E depois pra você recuperar o valor do parametro, por exemplo no load da pagina 'paginaSegura.aspx' você faz o seguinte:

    string logado = Resquest.QueryString["logado"].ToString();

    E ai, dependendo do valor que vier nesse parametro, você decide o que fazer.

    Segue alguns exemplos:
    http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/a14f0db0-ac39-4e68-8492-bb77b03b97a3
    http://forums.asp.net/p/1223291/2191155.aspx

    Qualquer duvida, é só chamar...

    sexta-feira, 28 de maio de 2010 20:01
  • Olá Guilherme, obrigado mais uma vez.

    Mas o problema é o seguinte:

    Quando faço o ser Server.Transfer a própria arquitetura do framwork utilizando formsauthentication é que redireciona para a página de login.

    Um exemplo seria se você tivesse uma aplicação utilizando formsauthentication e desejasse permitir que um usuário não logado acessasse uma determinada página de sua aplicação.

    A solução seria colocar no web.config:

     

    <location path="cartao.aspx">

    <system.web>

    <authorization>

    <allow users="*"/>

    </authorization>

    </system.web>

    </location>


    Isto permitiria que um usuário não logado acessasse a sua página cartao.aspx (www.seusite.com.br/cartao.aspx), sem ser remetido para a tela de login.
    Sem esta diretiva no web.config o usuário seria "jogado" automaticamente para a tela de login, pois não houve uma autorização explícita, como coloquei mais acima.

    Porém esta solução (<location path="......) não permite uma url completa.

    Então o que acontece quanto tento fazer Server.Transfer("https://ssl-w03dnnxxxx.websiteseguro.com/meusite/paginaSegura.aspx");

    O framework utilizando a autenticação por form pensa assim: "opa! ele está tentando acessar uma página (paginaSegura.aspx) que não tem autorização para um usuário não logado. Então ele redireciona para a página de login.

    Você poderia dizer: "Então porque você não coloca paginaSegura.aspx na diretiva <location><authorization> no web.config?"

    Eu te responderia. É porque necessito que o usuário esteja logado para acessar esta página.

     

    Um grande abraço e valeu aí pela força,

    Carlos Junior


    Carlos Junior
    sábado, 29 de maio de 2010 04:33