none
Redirecionar página RRS feed

  • Pergunta

  • Pessoal estou com uma dúvida que nem sei como procurar no fórum se estiver duplicado desde já peço desculpas.

    Estou precisando de ajuda nessa seguinte questão.

    Tenho um projeto em asp.net (vb) onde todas as minhas páginas tem que ser bloqueadas e exigir login de usuário fiz isso no web.config e está funcionando perfeitamente código abaixo

        <authentication mode="Forms">
          <forms name="AutoCookie" loginUrl="Login.aspx" timeout="60" path="/"></forms>
        </authentication>    
    	  <authorization>
    		  <deny users="?" />
    	  </authorization>
    

    E vai ter apenas uma pasta que não precisa do usuário efetuar login, também fiz o comando no web.config e também funcionou perfeitamente código abaixo

      <location path="aprovacao">
        <system.web>
          <authorization>
            <allow users="*"/>
          </authorization>
        </system.web>
      </location>  
    

    Só que como nem tudo é flores, tem cliente que quer que as páginas desta pasta peça autenticação por uma segurança a mais e outros não quer que o chefe fica colocando login e senha. 

    Então fiz um seguinte no parâmetros do sistema tem uma opção que o cliente escolhe se vai autenticar ou não que é a string aut. Se for aut=True pede autenticação na página de login e preciso que volte para a página da aprovação com os parâmetros, se for aut=false continua na página. Segue abaixo o link para vocês entender melhor.

    http://localhost:53148/aprovacao/di.aspx?CodCli=Vocal&DI=DI9607128809&Usr=356&Aut=True. Pede autenticação do usuário

    http://localhost:53148/aprovacao/di.aspx?CodCli=Vocal&DI=DI9607128809&Usr=356&Aut=False. Continua na página sem pedir autenticação.

    Alguém pode me dar uma sugestão de como posso fazer isso?


    Wagner_fix

    sexta-feira, 23 de outubro de 2015 15:36

Respostas

  • Pessoal encontrei a solução... Novamente agradeço a resposta de cada um. Com um pouquinho de dica de cada um consegui resolver o problema. Vou deixar a solução abaixo caso alguém precise.

    Vou tentar explicar.
    No page_load da Página eu mando ele verificar o aut. Se o aut = true ele monta um novo link com o ant = False para no próximo load ele passar direto. 

    E para não perder mais os parâmetros como disse que estava perdendo na resposta acima encontrei essa solução na Web HttpUtility.UrlEncode.

    Código da solução abaixo.

                If (Request.QueryString("Aut") = "True") Then
                    Dim Pagina As String = "aprovacao/di.aspx?CodCli=" + Request.QueryString("CodCli") + "&DI=" + Request.QueryString("DI") + "&Usr=" + Request.QueryString("Usr") + "&Aut=False"
                    Response.Redirect("../login.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Pagina))
                End If
    
    Resolvido.


    Wagner_fix

    • Marcado como Resposta Wagner_fix domingo, 25 de outubro de 2015 15:59
    domingo, 25 de outubro de 2015 15:59

Todas as Respostas

  • Olá,,

    Você pode verificar a querystring Aut, no CodeBehind da página di.aspx fazendo redirecionamento lá caso for igual a true.

    // no form_load
    var aut = Request.QueryString["Aut"];
    if(aut =="True")
    {
     //redireciona pra login
    }

    So lembrando nessa caso um usuário pode descobrir está técnica e alterar a url pra false. Você pode usar sessão pra melhorar isto.

    http://www.macoratti.net/aspn_pvw.htm



    sexta-feira, 23 de outubro de 2015 17:57
    Moderador
  • Wellington primeiramente obrigado pela resposta.

    Até esse ponto de redirecionar tranquilo mas se eu fizer login ele não vai voltar aqui http://localhost:53148/aprovacao/di.aspx?CodCli=Vocal&DI=DI9607128809&Usr=356&Aut=True entendeu?

    Grato


    Wagner_fix

    sexta-feira, 23 de outubro de 2015 18:16
  • Crie exceções no seu authorization.

    Exemplo:

    <configuration>
      <system.web>
        <authorization>
          <allow roles="GrupoDoChefe, Cliente1, Grupo2"/>
          <deny users="?"/>
        </authorization>
      </system.web>
    </configuration>

    Ou

    <configuration>
      <system.web>
        <authorization>
          <allow users="Chefe, Usuario1, Cara2"/>
          <deny users="?"/>
        </authorization>
      </system.web>
    </configuration>


    ROBERTOSLJUNIOR

    • Sugerido como Resposta JAlvez42 sábado, 24 de outubro de 2015 15:49
    sexta-feira, 23 de outubro de 2015 19:57
  • Entendi.

    E quando você redirecionar pro login passar a url atual, ai depois vc recupera ela de novo tipo.

    Http://localhost/login.aspx?returnUrl=aprovacao/di.aspx?CodCli=Vocal&DI=DI9607128809&Usr=356&Aut=True

    Depois que autenticar pega a url anterior na queryString returnUrl e redireciona pra ela de novo.

    • Sugerido como Resposta JAlvez42 sábado, 24 de outubro de 2015 15:49
    sexta-feira, 23 de outubro de 2015 22:29
    Moderador
  • A resposta do robertosljunior é mais elegante, mas a resposta do welingtton jr é mais simples pra ti.
    sábado, 24 de outubro de 2015 15:50
  • Pessoal obrigado pelas respostas.

    A idéia do Roberto Junior realmente é bacana mas infelizmente são N clientes e não quero ficar mexendo no meu web.config toda vez que o meu cliente mexer no parâmetro do sistema.

    A idéia do Wellington foi a melhor para mim mas não sei o porque quando ele redireciona a página quando volta para o aprova/di.aspx ele perde o parâmetro DI alguém tem alguma dica?

    Grato,

    Wagner


    Wagner_fix

    domingo, 25 de outubro de 2015 14:21
  • Pessoal encontrei a solução... Novamente agradeço a resposta de cada um. Com um pouquinho de dica de cada um consegui resolver o problema. Vou deixar a solução abaixo caso alguém precise.

    Vou tentar explicar.
    No page_load da Página eu mando ele verificar o aut. Se o aut = true ele monta um novo link com o ant = False para no próximo load ele passar direto. 

    E para não perder mais os parâmetros como disse que estava perdendo na resposta acima encontrei essa solução na Web HttpUtility.UrlEncode.

    Código da solução abaixo.

                If (Request.QueryString("Aut") = "True") Then
                    Dim Pagina As String = "aprovacao/di.aspx?CodCli=" + Request.QueryString("CodCli") + "&DI=" + Request.QueryString("DI") + "&Usr=" + Request.QueryString("Usr") + "&Aut=False"
                    Response.Redirect("../login.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Pagina))
                End If
    
    Resolvido.


    Wagner_fix

    • Marcado como Resposta Wagner_fix domingo, 25 de outubro de 2015 15:59
    domingo, 25 de outubro de 2015 15:59