为私人网站测试版添加一层安全性最不显眼的方法是什么?

时间:2009-07-23 13:51:54

标签: asp.net asp.net-mvc beta-testing

假设我有一个ASP.NET站点(本例中为MVC),它使用Forms身份验证和典型的成员身份系统。该站点允许经过身份验证的用户和匿名用户。

当我将该网站作为私人测试版发布时,我想在应用程序之上添加另一层安全性,例如superuser's简单密码系统。一旦用户通过了这一层安全性,我仍然希望我的表单身份验证/成员身份系统到位,因此beta测试人员可以将该站点视为经过身份验证的用户或匿名用户。

实现这一目标最不引人注目的方法是什么?我正在寻找最简单的解决方案,需要最少量的新代码或修改后的代码。例如。我不想修改每个控制器来检查特殊的cookie。必须有更好的方法......

这里有一个very similar问题,但似乎有问题的网站(一旦公开)只会提供匿名请求,所以它不一定与我的情况相比。 This answer表明ServerFault使用了一些cookie系统,但没有关于如何实现它的进一步细节。

2 个答案:

答案 0 :(得分:5)

在IIS中的服务器级实施安全性,并在运行IIS服务器的Windows的Active Directory中添加帐户/密码。

您无需更改任何代码。

答案 1 :(得分:1)

嗯,我知道你不想修改你当前的控制器,但这就是我为类似的行为所做的 我已经创建了一个自定义的ActionFilterAttribute,我已经给每个需要进行特定访问检查的控制器。你可以这样:

public class CheckBetaAccess : ActionFilterAttribute {
   public override void OnActionExecuting(ActionExecutingContext filterContext) {
        if (!canAccess) {
            filterContext.Controller.ViewData["someViewData"] = "some text";
            filterContext.Result = new ViewResult {
                ViewName = "the-view-anonymous-users-should-see",
                ViewData = filterContext.Controller.ViewData
            };
            filterContext.Result.ExecuteResult(filterContext);
        }
    }
}

然后我装饰了我的控制器:

[CheckBetaAccess]
public class SomeController : Controller {
    //....
}