2010-01-08 33 views
9

嘿,所有。我有一个ASP.NET MVC应用程序,我将很快部署到活动服务器。理论上,我想在我进行beta测试时密码保护应用程序,而无需修改应用程序中的底层代码库或成员身份。我会有几个人进行beta测试,所以它是强制性的,它可以在网上找到。一个简单的场景:保护ASP.NET MVC应用程序的beta测试?

  1. 用户导航到应用程序下测试
  2. 也许一个HttpHandler将处理该请求,并将其重定向到一个间隙,临时登录页面,在那里他们必须输入一个测试密码来访问应用程序

Stackoverflow在beta测试中使用了类似的技术。有任何想法吗?

编辑澄清。我无法访问此特定应用程序的IIS,因为我使用的是托管主机。

+0

您可以为成员资格提供者提供一个接口,并在您上线时更改该接口的实现吗? – 2010-01-08 18:23:59

+0

嗯,我不确定。我使用OpenID作为我的会员供应商。 – user135383 2010-01-08 18:25:17

+0

我之前问过类似的问题,但没有得到太多的活动,所以我很高兴看到这再次问。更多的输入在这里:http://stackoverflow.com/questions/1171897/what-is-the-most-unobtrusive-way-to-add-a-layer-of-security-for-a-private-beta-of – 2010-01-08 19:22:40

回答

1

一对夫妇的想法:

  1. 使用Windows在IIS
  2. 整个应用程序/网站,你提到的想法也是一个不错的办法IMO认证,实施很可能是在这种情况下灵活。
+0

我同意让IIS处理它。只需几次点击,然后您就不会花费时间来构建您稍后必须恢复的任务。 – 2010-01-08 18:37:27

+0

对不起,我忽略提及我无法访问IIS,因为我正在使用托管解决方案。 – user135383 2010-01-08 18:41:44

0

当你在Visual Studio中创建一个新的ASP.NET MVC项目时,会自动获取一个AccountController,它使用ASP.NET的底层MembershipProvider提供登录机制。

即使您没有在最终的应用程序中使用它,也可以将其用作临时解决方案,直到您启动并运行真正的安全机制。

它需要您为这些ASP.NET服务设置SQL Server数据库,但根据您对此的熟悉程度,您可以在10分钟到几个小时内完成。

当公共测试版结束时,您可以放弃AccountController和数据库。

0

我与dhulk - 在IIS上使用Windows身份验证。该路线将允许您避免在您的应用程序中使用任何验证码。越简单越好,我想避免执行会员制度,然后执行un

0

我想创建一个简单的登录查看该设置将被你的Global.asax文件Session_Start()检查会话......像这样:

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

当您准备好打开你的应用程序对于每个人,只需在您的Global.asax文件中删除视图和三行代码即可。

+0

嗯,我想过,但不幸的是,Session_Start事件中没有Session State。 – user135383 2010-01-08 18:43:37

+0

那么如何使用'Session_Start()'呢? – roosteronacid 2010-01-08 18:51:53

+0

刚刚检查。你可以通过'Session_Start()'访问Session对象。有你去:) – roosteronacid 2010-01-08 18:54:34

1

你可以连接一个快速定制的AuthorizeAttribute来检查自定义的Auth cookie。只需在Beta版下装饰你的控制器,并在你准备好时删除它们。

像这样的东西(PS - 这篇关于未经测试的飞):

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); 
     } 
    } 

有这样的操作方法这样:

 [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. 使用好老RoleProvider和创建Beta角色并通过授权检查
  2. 创建您自己的AuthorizeAttribute并检查IP地址或Cookie 。