comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] Problemas y preguntas LOGIN ASP.NET

  • 6 Respuestas
  • 1944 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rush

  • *
  • Underc0der
  • Mensajes: 377
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« en: Enero 04, 2016, 04:33:31 pm »
Buenas, hace tiempo estoy haciendo un proyecto, parece ser que no acabo de aprender y cada vez me topo con la pared cuando aparece cosas nuevas, ahora me toco la parte de hacer un login en asp.net, pero con diferentes tipos de usuario, en este caso solo tengo 2 tipos, usuarios visitantes y usuarios administradores, e buscado como crear un login, pero nadie habla mucho acerca de como ocultar links, opciones etc, jamas e creado un sitio o aplicación en la cual tenga mas de 1 tipo de usuario, así que no se como se manejan las vistas, lo mas fácil es que cree una vista para los usuarios y otra vista para los administradores, pero no se si es lo mas correcto o de que manera se tiene que hacer, esta es la estructura del sitio


(No juzguen la apariencia xD)

Esa seria la estructura del administrador, asi que ahi no tengo mucho problema, pero si yo quiero que entre un visitante, solo podra ver el area de catalogos, como puedo ocultar todo lo demas?, tengo que crear una nueva vista o una nueva master page o como es que funciona esto?, quiero que se vea de la siguiente manera.



Otra pregunta, ya lei la diferencia entre la cookie y sessiones, lo mas seguro es que utilice sessiones y les de un timeout, ahora como puedo validar que un usuario tenga permisos sobre esa ruta o no, la idea que tuve fue hacer una consulta que me devuelva el nombre de usuario y el tipo de usuario y subirlo a session
al tener el evento page_load verificar el el usuario es de tipo ADMIN o VISITANTE, dependiendo de estoy cargar la pagina o no, espero puedan ayudarme saludos.
« Última modificación: Enero 05, 2016, 02:58:47 pm por blackdrake »
No tienes permisos para ver links. Registrate o Entra con tu cuenta


Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1910
  • Actividad:
    15%
  • Reputación 15
    • Ver Perfil
« Respuesta #1 en: Enero 05, 2016, 09:09:04 am »
Hola! te dejo un fragmento de código que tenía de una vieja web en asp.net

Login.aspx.cs
Código: ASP
  1.  try
  2.         {
  3.             SqlConnection conexion = new SqlConnection(StrCadenaConexion);
  4.             SqlCommand comando = new SqlCommand(StrComandoSql, conexion);
  5.             conexion.Open();
  6.             SqlDataReader reader = comando.ExecuteReader();
  7.             if (reader.Read())
  8.             {
  9.                 Session.Add("Id", reader.GetInt32(0));
  10.                 Session.Add("Nombre", reader.GetString(1));
  11.                 Session.Add("Rol", reader.GetString(2));
  12.                 e.Authenticated = true;
  13.                 reader.Close();
  14.                 comando.Dispose();
  15.                 conexion.Close();
  16.  
  17.                 if (Convert.ToString(Session["Rol"]) == "A")
  18.                     Response.Redirect("~/Admin.aspx");
  19.                 if (Convert.ToString(Session["Rol"]) == "U")
  20.                     Response.Redirect("~/Default.aspx");
  21.             }
  22.             else
  23.             {
  24.                 e.Authenticated = false;
  25.                 reader.Close();
  26.                 comando.Dispose();
  27.                 conexion.Close();
  28.                 lblEstado.Visible = true;
  29.                 lblEstado.Text = "El email o la contraseña introducidos no son válidos";
  30.             }

Personalmente, era de una tienda online, donde el administrador del sitio NO podía comprar (por eso lo redirijo automáticamente a admin.aspx).

Pero, en la master page, si que jugué con las sesiones para cargar algunas opciones del menú u otras (lo que tu puedes hacer, es una página idéntica para los dos y mostrar diferentes opciones así):

MasterPage.master.cs
Código: ASP
  1. protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.         if (Convert.ToString(Session["Rol"]) == "U")
  4.         {
  5.             lblLogin.Text = "<ul class='nav navbar-nav'><li><a href='default.aspx'>Inicio</a></li><li><a href='catalogo.aspx?categoria=0'>Catalogo</a></li><li><a href='carrito.aspx'>Carrito</a></li>";
  6.             lblLogin.Text += "<li><a href='pedidos.aspx'>Mis Pedidos</a></li>";
  7.             lblLogin.Text += "<li><a href='perfil.aspx'>Mi cuenta</a></li><li><a href='contacto.aspx'>Soporte</a></li>";
  8.             lblLogin.Text += "<li><a href='logout.aspx'>Cerrar Sesión</a></li></ul>";
  9.         }
  10.         else
  11.         {
  12.             lblLogin.Text = "<ul class='nav navbar-nav'><li><a href='default.aspx'>Inicio</a></li><li><a href='catalogo.aspx?categoria=0'>Catalogo</a></li><li><a href='contacto.aspx'>Contacto</a></li>";
  13.             lblLogin.Text += "<li><a href='login.aspx'>Acceder</a></li></ul>";
  14.         }
  15.         if (Convert.ToString(Session["Rol"]) == "A")
  16.         {
  17.             lblLogin.Text = "<ul class='nav navbar-nav'><li><a href='default.aspx'>Inicio</a></li><li><a href='catalogo.aspx?categoria=0'>Catalogo</a></li>";
  18.             lblLogin.Text += "<li><a href='Admin.aspx'>Administración</a></li>";
  19.             lblLogin.Text += "<li><a href='logout.aspx'>Cerrar Sesión</a></li></ul>";
  20.         }
  21.     }


NOTA: Los logins de asp por defecto son vulnerables a sqli, puesto a que era para clase hice una chapuzilla rápido para evitarlo, pero así te haces una ídea :D

Login.aspx.cs
Código: ASP
  1.  //Evitamos sqli --> 'or '1'='1
  2.     if (Login1.UserName.Contains("'") || Login1.Password.Contains("'"))
  3.     {
  4.         lblEstado.Visible = true;
  5.         lblEstado.Text = "Sqli Detectado";
  6.         sqli(ip);
  7.     }



Espero que te haya servido.

Saludos.
« Última modificación: Enero 05, 2016, 09:17:35 am por blackdrake »



Desconectado rush

  • *
  • Underc0der
  • Mensajes: 377
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« Respuesta #2 en: Enero 05, 2016, 01:11:49 pm »
Gracias blackdrake, me diste varias ideas, supongo que para que no puedan acceder por url verificas los permisos en el page_load y si no estan logeados los rediriges, para lo de SQLI lei que haciendolo de esta manera se evitaba el fallo de seguridad:



Gracias por el gran aporte, no hubiera estado mejor explicado!
No tienes permisos para ver links. Registrate o Entra con tu cuenta


Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1910
  • Actividad:
    15%
  • Reputación 15
    • Ver Perfil
« Respuesta #3 en: Enero 05, 2016, 01:51:47 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Gracias blackdrake, me diste varias ideas, supongo que para que no puedan acceder por url verificas los permisos en el page_load y si no estan logeados los rediriges, para lo de SQLI lei que haciendolo de esta manera se evitaba el fallo de seguridad:



Gracias por el gran aporte, no hubiera estado mejor explicado!

Exacto, también es una posibilidad (yo lo hice también así porque guardaba los intentos de sqli en la BD).

Citar
supongo que para que no puedan acceder por url verificas los permisos en el page_load y si no estan logeados los rediriges
Exacto :D

Doy el tema por solucionado entonces @No tienes permisos para ver links. Registrate o Entra con tu cuenta?

Saludos.



Desconectado rush

  • *
  • Underc0der
  • Mensajes: 377
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« Respuesta #4 en: Enero 05, 2016, 02:11:14 pm »
Solo una cosa mas, en las sessiones, como para destruir la session se usa Session.Clear()?
Que pasa si varios usuarios inician sesion con el mismo usuario?
No tienes permisos para ver links. Registrate o Entra con tu cuenta


Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1910
  • Actividad:
    15%
  • Reputación 15
    • Ver Perfil
« Respuesta #5 en: Enero 05, 2016, 02:53:00 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Solo una cosa mas, en las sessiones, como para destruir la session se usa Session.Clear()?
Que pasa si varios usuarios inician sesion con el mismo usuario?

Puedes utilizar:

Código: ASP
  1. Session.Clear();
  2. Session.Abandon();

En cuanto a: Que pasa si varios usuarios inician sesion con el mismo usuario?

No pasaría nada, cada uno se trataría como usuarios "independientes" pudiendo cerrar sesión cada uno cuando quisiera.

Obviamente si se modifica por ejemplo el perfil, al ser la misma cuenta, verían todos el cambio.

Saludos.



Desconectado rush

  • *
  • Underc0der
  • Mensajes: 377
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« Respuesta #6 en: Enero 05, 2016, 02:56:43 pm »
Ok gracias por tus respuestas blackdrake, puedes darlo por solucionado excelente ayuda!
No tienes permisos para ver links. Registrate o Entra con tu cuenta


 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 6205
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2123
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 1529
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 2663
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3339
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon