Pregunta

Tengo un sitio web ASP.Net 2.0 con SQL Server como base de datos y C # 2005 como lenguaje de programación. El sitio web está casi completo y todos los enlaces funcionan bien. Pero quiero evitar que los usuarios normales abran un par de páginas. Cuando cualquier usuario hace clic en esos enlaces específicos, se abre otra página que contiene un control de inicio de sesión ASP. El usuario debe proporcionar un ID de usuario y contraseña válidos para mostrar los enlaces que apuntan a las páginas restrictivas. Pero siendo un novato, no sé cómo aprovechar todo el poder del control de inicio de sesión ASP. Porque, si un usuario llega a conocer la URL exacta de las páginas restringidas, puede omitir el control de inicio de sesión y acceder directamente a esas páginas escribiendo la URL en la barra de direcciones. Quiero evitar esto Si el usuario escribe la url directamente en la barra de direcciones, quiero que la página misma verifique si el usuario ha sido validado a través del control de inicio de sesión y muestra la página o señala al usuario a la página de inicio de sesión.

¿Cómo implemento esta función?

Gracias.

Lalit Kumar Barik

¿Fue útil?

Solución

Debe verificar el estado de inicio de sesión del usuario en cada evento Page_Load () en las páginas que deben controlar los permisos, o simplemente poner el código de autenticación en un archivo CS que se incluirá en todos los demás archivos.

Dependiendo de la arquitectura de autenticación que elija (simplemente use la variable de sesión o cree una identificación de sesión con cookies), debe adaptar su código en consecuencia.

La forma más sencilla sería administrar los inicios de sesión a través del objeto de sesión. Cuando el usuario inicia sesión correctamente con las credenciales correctas, puede establecer Session [" login_in "] = true . Y en cada evento Page_Load () de las páginas que desea proteger, deberá realizar la siguiente verificación.

Agregue este código al comienzo de su función Page_Load ():

  if (Session["logged_in"] != null && (bool)Session["logged_in"] == true){
    Response.Write("I'm logged in!");
  }else{
    Response.Write("I'm not logged in.");
  }

Tenga en cuenta que esto está bien para aplicaciones de intranet simples, pero si desea acceder a arquitecturas de inicio de sesión más seguras, lea más sobre el tema, ya que reubicar únicamente en variables de sesión no es seguro porque las sesiones pueden ser extraviadas .

Otros consejos

Querrá echar un vistazo a la ubicación secton de la configuración web.

En esa sección, puede definir hasta el nivel de página los derechos de acceso, por lo que no importaría si los usuarios conocieran la URL de las páginas protegidas, ASP.NET no los dejaría entrar.

Entonces agregaría algo como:

<location path="SecuredPage.aspx">
  <system.web>
     <authorization>
        <deny users="?"/>
     </authorization>
  </system.web>
</location>

El " denegar usuarios = "? " " bit dice " Denegar a todos los usuarios anónimos " ;.

También puede configurarlo para permitir solo ciertos roles, si los está utilizando.

Puede encontrar más información sobre la sección Autorización aquí:

  

Elemento de autorización

Esto es alimento para los servicios de membresía ASP.Net. Eche un vistazo a este artículo y también la gran serie en 4GuysFromRolla.

La membresía le permite almacenar información de usuario / contraseña que es utilizada, entre otros, por el control de inicio de sesión. Junto con la configuración de autorización, podrá restringir directamente el acceso a páginas específicas a usuarios o roles específicos.

Necesitará una forma de administrar las sesiones de inicio de sesión para cada usuario. Los siguientes son algunos tutoriales que podrían ayudarlo:

http://www.codeproject.com/KB/session/NoCookieSessionLogin.aspx

http://www.dotnetspider.com /resources/5597-Handling-Session-for-Login-Logout.aspx

Haría una tabla de roles para los usuarios. Todos los que inician sesión obtienen el rol 'normal'. Los usos especiales que designe por sus credenciales obtienen roles asignados para acceder a una página o sección de su sitio web. Ciertos usuarios (como usted) obtendrían un rol de administrador que les permitiría acceder automáticamente a todo.

Activa una función llamada CheckIsInRoles ('Admin', 'Normal', 'WhateverRoleYouChoose') que devuelve un valor booleano. Si es verdadero, cargue la página; si no, no lo haga.

Aún mejor no muestre un enlace si no está en el rol correcto.

Esto tiene el beneficio adicional de que todos inicien sesión una vez y luego accedan a todas las páginas que necesitan sin tener que iniciar sesión cada vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top