|
Hola Ajadex esta vez mi duda es larga y trataré de redactarla lo mejor posible para que me puedas entender. Mira el cliente que me pidió hacerle la web me pidió entre muchas estas condiciones: 1- El usuario se podrá autenticar desde cualquier página, una vez autenticado podrá navegar libremente. El sitio debe tener una sola pagina con seguridad (llamada ServicioRecogida) que le pida autenticarse al usuario al tratar de entrar , una vez autenticado le da acceso a la misma. 2- Existirá una página para llenar un formulario (que está hecho con textbox), que de acuerdo al estado del usuario (autenticado o no), le muestre unos textbox de mas, si no esta autenticado. Es decir, existirán dos textbox que deben desaparecer si el usuario se autentica para llenar el formulario. En esta funcionalidad me exigen que utilize Ajax, de forma tal que si el usuario se autentica se me refresque una sola parte de la página. Ahora a continuación te diré mas o menos como implementé cada una de esas condiciones y los errores que me da: 1- Puse mis componentes de autenticarse en la masterpage (de esta forma pensé que podría asegurar que el usuario se pueda autenticar desde cualquier página). En el onclick del botón autenticarse programé lo que me aconsejastes. If (UsuarioValido(txtId.Text, txtPass.Text)) Then FormsAuthentication.RedirectFromLoginPage(txtId.Text, True) Else txtmenss.Text = "no es usuario" End If Todo perfecto, el problema es que RedirectFromLoginPage, me redirecciona a la página que le tengo puesta en el webconfig como default, defaultUrl="~/default.aspx"/>. Yo no quiero esto, quiero que el usuario una vez que se autentique vaya a la misma página donde estaba, y en caso de la página ServicioRecogida que lleva autenticación obligada, el sitio lo redireccione a esa misma página que solicitó. 2- Instalé los Ajax, y utilicé un componente llamado update panel, que según leí, este permite hacer actualizaciones asíncronas de los componentes que tenga adentro (en mi caso textbox) sin actualizar la página entera. Entoces utilizé una función de la clase User (My.User.IsAuthenticated), que leí devuelve el estado de un usuario (autenticado o no), entonces puse este código: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If My.User.IsAuthenticated Then lblCorreo.Visible = False TxtCorreo.Visible = False lblTelf.Visible = False TxtTelf.Visible = False Else lblCorreo.Visible = True TxtCorreo.Visible = True lblTelf.Visible = True TxtTelf.Visible = True End If End Sub Ahora, eso parece que funciona bien, en el sentido de que me muestra o no los textbox de acuerdo al estado del usuario. Pero no funciona la parte de los Ajax, ya que al autenticarse el usuario estando en esta página, me esconde los textbox, pero igual me carga la página entera. Esto supongo sea que la autenticación de por si, exige refrescar las páginas. Que me aconsejas????? Disculpa que te pregunte tanto, es que no se mucho de web y tengo que entregar este sitio en este mes. Cuando tengas un chance tírale un ojo a esto y si tienes alguna sugerencia me escribes. Gracias nuevamente Marlies.
|