Usuário com melhor resposta
Redirecionar página

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
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
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
- Editado welington jrModerator sexta-feira, 23 de outubro de 2015 18:04
-
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
-
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
-
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
-
-
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
-
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