假设我有一个ASP.NET站点(本例中为MVC),它使用Forms身份验证和典型的成员身份系统。该站点允许经过身份验证的用户和匿名用户。
当我将该网站作为私人测试版发布时,我想在应用程序之上添加另一层安全性,例如superuser's简单密码系统。一旦用户通过了这一层安全性,我仍然希望我的表单身份验证/成员身份系统到位,因此beta测试人员可以将该站点视为经过身份验证的用户或匿名用户。
实现这一目标最不引人注目的方法是什么?我正在寻找最简单的解决方案,需要最少量的新代码或修改后的代码。例如。我不想修改每个控制器来检查特殊的cookie。必须有更好的方法......
这里有一个very similar问题,但似乎有问题的网站(一旦公开)只会提供匿名请求,所以它不一定与我的情况相比。 This answer表明ServerFault使用了一些cookie系统,但没有关于如何实现它的进一步细节。
答案 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 {
//....
}