none
identificar si una pagina proviene de otra especifica RRS feed

  • Pregunta

  • olas....
    quiero saber como identifico si una pagina proviene de otra pagina especifica¿?
    por ejemplo

    page_load()
    {
    if(previous page == "nombrepagina.aspx")
    {
        textbox.visible=true;
    }
    else
    {
        textbox.visible=false;
    }

    muchas gracias por cualquier solucion....

    miércoles, 30 de diciembre de 2009 18:55

Respuestas

  • Hola.

    Intento aportarte varias ideas a ver si una de ellas te sirve como inspiración.

    1. Puedes hacerlo suministrando parámetros.
    Es decir, en la página donde esté el menú puedes incluir información extra en el enlace hacia la página principal. Imagina, por ejemplo, <a href="default.aspx?VengoDe=usuario">modificar</a>. Así, en la página principal podrías conocer de dónde vienes examinando simplemente el Request["VengoDe"].

    Obviamente, la url sería visible para el usuario, que podría retocar a mano los parámetros. De todas formas, si default.aspx contiene controles de seguridad que detectan si el usuario está logeado, si es admin, etc., te podría valer.

    2. Puedes establecerlo en una variable de sesión
    Podrías crear una variable de sesión que indicara cuándo el usuario está en "modo edición de página". Desde la página principal consultarías dicha variable y actuarías en función de su valor. Una vez finalices el modo edición, por ejemplo al guardar los cambios, limpiarías la variable y listo.

    Esta es más segura al depender de información basada en servidor, no manipulable por el usuario.

    3. Idem, en una cookie
    Pues eso, igual que el anterior pero manteniendo el estado de una cookie, por si no quieres utilizar variables  de sesión. Es más manipulable que la anterior, y menos que la primera.

    4. Consultando el referer
    Lo que te comentaba en el mensaje anterior, consultando el UrlReferer puedes saber de dónde viene el usuario. También es manipulable por alguien capaz de retocar un encabezado Http.

    Pues eso, espero que te valga de ayuda. Y si no, pues ya sabes dónde estamos...

    Saludos



    José M. Aguilar
    Variable not found
    jueves, 31 de diciembre de 2009 9:03
  • Hola crituscam,

    Igual se podría solucionar sin saber de que página viene, mirando el rol del usuario? Igual te podría servir seria algo asi:

    page_load()
    {
    if((HttpContext.Current.User.IsInRole("Administrator")))
    {
        textbox.visible=true;
    }
    else
    {
        textbox.visible=false;
    }

    Que en mvc sería algo así ;) (en la vista):

        <% if(HttpContext.Current.User.IsInRole("Administrator")) {%>
            <%= Html.TextBox("UnTextBox") %>
        <% } %>    

    O si lo quieres hacer en el controller podrías añadirle un campo bool IsAdmin al model o meterlo en el view Data:

    ViewData["IsAdmin"] = HttpContext.User.IsInRole("Administrator");


    Y hablando de navegación entre páginas, aporto este link que puede ser interesante también: http://mvcsitemap.codeplex.com

    Un saludo!





     

    Colabora con el foro: Si este mensaje te es de utilidad márcalo como respuesta.


    • Propuesto como respuesta BetaTester jueves, 28 de enero de 2010 1:22
    • Marcado como respuesta ccmmasi miércoles, 10 de febrero de 2010 15:18
    jueves, 31 de diciembre de 2009 12:43

Todas las respuestas

  • Buenas,

    puedes obtener la dirección URL de la que proviene el usuario utilizando la propiedad Request.UrlReferrer.

    Eso sí, ten en cuenta que el dato es fácilmente falsificable (viene en el encabezado HTTP) y no debe ser considerado como una prueba inequívoca del origen del usuario; además, hay veces que llega en blanco, por ejemplo en Internet Explorer cuando el salto a la página de destino se ha realizado desde javascript.

    Por cierto, esos "page_load()" y  "textbox.visible=true" delatan que mucho de MVC no tiene este tema... ;-DD

    Saludos & feliz 2k10.


    José M. Aguilar
    Variable not found
    miércoles, 30 de diciembre de 2009 21:27
  • que pena jose,.,.,.,.

    pero entonces como deberia yo identificar si la pagina proviene de una deseada de una manera mas segura¿?.,.,.,.,

    lo que intento hacer es:

    estoy en la pagina principal (Default.aspx), inicio sesion en otra (Login.aspx).

    si inicia como administrador se redirige a una pagina (paginadeusuario.aspx) que contiene un menu:
        modificar contenido en la pagina principal

    entonces:

    si la pagina principal (Default.aspx) priviene de (paginadeusuario.aspx), como identifico que si viene de esta para poder realizar las modificaciones¿?

    no se si fui muy claro o muy enredado
    jijijiji

    gracias de nuevo
    miércoles, 30 de diciembre de 2009 22:39
  • Hola.

    Intento aportarte varias ideas a ver si una de ellas te sirve como inspiración.

    1. Puedes hacerlo suministrando parámetros.
    Es decir, en la página donde esté el menú puedes incluir información extra en el enlace hacia la página principal. Imagina, por ejemplo, <a href="default.aspx?VengoDe=usuario">modificar</a>. Así, en la página principal podrías conocer de dónde vienes examinando simplemente el Request["VengoDe"].

    Obviamente, la url sería visible para el usuario, que podría retocar a mano los parámetros. De todas formas, si default.aspx contiene controles de seguridad que detectan si el usuario está logeado, si es admin, etc., te podría valer.

    2. Puedes establecerlo en una variable de sesión
    Podrías crear una variable de sesión que indicara cuándo el usuario está en "modo edición de página". Desde la página principal consultarías dicha variable y actuarías en función de su valor. Una vez finalices el modo edición, por ejemplo al guardar los cambios, limpiarías la variable y listo.

    Esta es más segura al depender de información basada en servidor, no manipulable por el usuario.

    3. Idem, en una cookie
    Pues eso, igual que el anterior pero manteniendo el estado de una cookie, por si no quieres utilizar variables  de sesión. Es más manipulable que la anterior, y menos que la primera.

    4. Consultando el referer
    Lo que te comentaba en el mensaje anterior, consultando el UrlReferer puedes saber de dónde viene el usuario. También es manipulable por alguien capaz de retocar un encabezado Http.

    Pues eso, espero que te valga de ayuda. Y si no, pues ya sabes dónde estamos...

    Saludos



    José M. Aguilar
    Variable not found
    jueves, 31 de diciembre de 2009 9:03
  • Hola crituscam,

    Igual se podría solucionar sin saber de que página viene, mirando el rol del usuario? Igual te podría servir seria algo asi:

    page_load()
    {
    if((HttpContext.Current.User.IsInRole("Administrator")))
    {
        textbox.visible=true;
    }
    else
    {
        textbox.visible=false;
    }

    Que en mvc sería algo así ;) (en la vista):

        <% if(HttpContext.Current.User.IsInRole("Administrator")) {%>
            <%= Html.TextBox("UnTextBox") %>
        <% } %>    

    O si lo quieres hacer en el controller podrías añadirle un campo bool IsAdmin al model o meterlo en el view Data:

    ViewData["IsAdmin"] = HttpContext.User.IsInRole("Administrator");


    Y hablando de navegación entre páginas, aporto este link que puede ser interesante también: http://mvcsitemap.codeplex.com

    Un saludo!





     

    Colabora con el foro: Si este mensaje te es de utilidad márcalo como respuesta.


    • Propuesto como respuesta BetaTester jueves, 28 de enero de 2010 1:22
    • Marcado como respuesta ccmmasi miércoles, 10 de febrero de 2010 15:18
    jueves, 31 de diciembre de 2009 12:43
  • ok, muchas gracias, es justo lo que necesitaba,.,.,..,.,.,.,.,.,., 
    por cuestiones de la vida he comenzado a desarrollar sobre xaml, deseenme suerte
    miércoles, 10 de febrero de 2010 15:19