代码之家  ›  专栏  ›  技术社区  ›  Elijah66

为网站的私有beta版添加安全层的最不显眼的方法是什么?

  •  2
  • Elijah66  · 技术社区  · 17 年前

    假设我有一个asp.net站点(本例中是mvc),它使用表单身份验证和一个典型的成员系统。该站点允许经过身份验证的用户和匿名用户。

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

    最不引人注目的方法是什么?我正在寻找最简单的解决方案,这将需要最少的新的或修改的代码。我不想修改每个控制器来检查特殊的cookie。一定有更好的办法…

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

    2 回复  |  直到 17 年前
        1
  •  5
  •   Philippe    17 年前

    在iis中的服务器级实现安全性,并在运行iis服务器的windows的active directory中添加帐户/密码。

    你不需要修改任何代码。

        2
  •  1
  •   Çağdaş Tekin    17 年前

    好吧,我知道你不想修改你现在的控制器,但这里是我做了类似的行为。
    我已经创建了一个定制的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 {
        //....
    }