2010-01-08 10 views
9

Hola a todos. Tengo una aplicación ASP.NET MVC que pronto implementaré en un servidor en vivo. Teóricamente, me gustaría proteger con contraseña la aplicación mientras estoy en prueba beta sin modificar la base de código subyacente o membresía dentro de la aplicación. Voy a tener varias pruebas beta de personas, por lo que es obligatorio que esté disponible en la web. Un escenario simple:¿Asegura una aplicación ASP.NET MVC para la prueba beta?

  1. usuario navega a la aplicación bajo beta
  2. Tal vez un HttpHandler procesará la solicitud y redirigirlos a un intersticial, página temporal de inicio de sesión en el que tienen que introducir una contraseña beta para acceder a la aplicación

Stackoverflow utilizó una técnica similar cuando estaban en prueba beta. ¿Algunas ideas?

Una edición para aclarar. No tengo acceso a IIS para esta aplicación en particular porque estoy usando un host administrado.

+0

¿Puede proporcionar una interfaz para el proveedor de membresía y cambiar la implementación de esa interfaz cuando entre en funcionamiento? –

+0

Bueno, no estoy seguro. Estoy usando OpenID como mi proveedor de membresía. – user135383

+0

Hice una pregunta similar antes, pero no tuvo mucha actividad, así que me alegra ver que esto se repita. Más información aquí: http://stackoverflow.com/questions/1171897/what-is-the-most-unobtrusive-way-to-add-a-layer-of-security-for-a-private-beta-of –

Respuesta

1

un par de ideas:

  1. Utilizar autenticación de Windows para el conjunto de aplicación/sitio en IIS
  2. La idea que usted ha mencionado también es un buen enfoque de la OMI, la aplicación probablemente ser flexible en ese caso.
+0

Estoy de acuerdo en dejar que IIS lo maneje. Con solo un par de clics y luego no dedica tiempo a crear algo, tendrá que deshacerlo más adelante. –

+0

Lo siento, olvidé mencionar que no puedo acceder a IIS porque estoy usando una solución administrada. – user135383

0

Cuando crea un nuevo proyecto ASP.NET MVC en Visual Studio, automáticamente obtiene un AccountController que utiliza MembershipProvider subyacente de ASP.NET para proporcionar un mecanismo de inicio de sesión.

Incluso si no lo tiene en su aplicación final, puede utilizarlo como una solución temporal hasta que obtenga su mecanismo de seguridad real en funcionamiento.

Requiere que configure una base de datos SQL Server para esos servicios ASP.NET, pero dependiendo de qué tan familiarizado esté con eso, puede hacerlo en diez minutos o en un par de horas.

Cuando la versión beta pública finaliza, puede descartar AccountController y la base de datos.

0

Estoy con dhulk: use la Autenticación de Windows en IIS. Esa ruta le permitirá evitar poner cualquier código de autenticación en su aplicación. Más simple es mejor, y me gustaría evitar hacer el trabajo para implementar un sistema de membresía y luego a un -implementarlo.

0

me gustaría crear un simple Vista de inicio de sesión que establece una sesión que consigue comprueba en Session_Start() en su archivo Global.asax ... Al igual que:

protected void Session_Start() 
{ 
    if (!Convert.ToBoolean(Session["authenticated"])) 
    { 
     // Redirect to the login View 
    } 
} 

Cuando esté listo para abrir su aplicación para todos, solo elimine la Vista y las tres líneas de código en su archivo Global.asax.

+0

Bueno, pensé en eso, pero desafortunadamente, Session State no está disponible en el evento Application_Start. – user135383

+0

¿Qué tal si usamos 'Session_Start()'? – roosteronacid

+0

Acabo de marcar. Puede acceder al objeto Session en 'Session_Start()'. Ahí tienes :) – roosteronacid

1

Puede conectar un AutorizarAtributo personalizado rápido que busque una cookie de autenticación personalizada. Simplemente decore sus controladores con la versión beta y elimínelos cuando esté listo para comenzar.

Algo como esto (PS - ¿Esta sobre la marcha sin pruebas):

public class BetaTestAuthorize : AuthorizeAttribute 
    { 
     protected override bool AuthorizeCore(HttpContextBase httpContext) 
     { 
      //if(cookie checks out ok) 
       //return true; 
      //else 
       //httpContext.Response.Redirect("BetaLoginPage"); 

      return base.AuthorizeCore(httpContext); 
     } 
    } 

Tener un método de acción, así:

 [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult BetaLogin(string username, string password) 
     { 
      if(username == "whatever" && password == "whatever") 
      { 
       //create custom cookie 
       return RedirectToAction("Index", "Home"); 
      } 
      else 
       return View(); 
     } 
0
  1. Usar el buen viejo RoleProvider y crear una Rol Beta y compruébalo a través de Authorize
  2. Crea tu propio AuthorizeAttribute y verifica la dirección IP o una cookie .
Cuestiones relacionadas