保护ASP.NET MVC应用程序以进行beta测试?

时间:2010-01-08 18:17:19

标签: asp.net-mvc

嘿所有人。我有一个ASP.NET MVC应用程序,我将很快部署到实时服务器。从理论上讲,我想在测试时对密码保护应用程序而不修改底层代码库或应用程序中的成员资格。我将有几个人进行beta测试,因此必须在网上提供。一个简单的场景:

  1. 用户导航到测试版
  2. 下的应用程序
  3. 也许HttpHandler会处理请求并将其重定向到插页式临时登录页面,他们必须输入测试版密码才能访问该应用程序
  4. Stackoverflow在进行beta测试时使用了类似的技术。有什么想法吗?

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

6 个答案:

答案 0 :(得分:1)

一些想法:

  1. 对IIS中的整个应用程序/站点使用Windows身份验证
  2. 您提到的想法也是IMO的一个好方法,在这种情况下实施可能会很灵活。

答案 1 :(得分:1)

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

这样的东西(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();
        }

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分:0)

我使用dhulk - 在IIS上使用Windows身份验证。该路由将允许您避免在应用程序中放置任何身份验证代码。更简单更好,我想避免做工作来实现会员制,然后 un - 实现它。

答案 4 :(得分:0)

我将创建一个简单的登录视图,该视图设置在 Global.asax 文件中Session_Start()上检查的会话......就像这样:

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

当您准备好为每个人打开您的应用程序时,只需删除 Global.asax 文件中的View和三行代码。

答案 5 :(得分:0)

  1. 使用旧的RoleProvider并创建Beta角色并通过授权
  2. 进行检查
  3. 创建您自己的AuthorizeAttribute并检查IP地址或cookie