0

我正在为私人测试版准备一个网站。该网站可以匿名使用,也可以允许用户登录(使用身份)。

在私人测试版期间,我需要对整个站点进行密码保护,以便只有拥有密码的用户才能访问主站点。一旦他们到达那里,他们可以选择“匿名”浏览网站,或者他们可以注册一个实际帐户并使用一个帐户浏览。

我正在寻求任何好的/便宜的解决这个问题的方法

  • 一个第三方网站,可以将我的整个网站包装在一个安全/私密的环境中
  • 一个简单的“看门人”应用程序,它接收对网站的所有请求,并在用户通过身份验证后将它们转发到整个网站
  • 其他一些解决方案(可能完全使用像 nginx/HAproxy 之类的代理服务器或其他东西)

该解决方案必须不干扰我当前的代码库,这就是为什么我需要它来完全包装我的应用程序。测试完成后,我将能够删除包装(并且可能重新指向一些 DNS 记录),并且该站点将在没有身份验证步骤的情况下继续工作。

到目前为止,我还没有找到合适的第三方网站来使用。


我尝试创建自己的包装器

我试图创建一个非常简单的 MVC 应用程序,它采用一般路由并将其发送到一个简单的操作,该操作在从实际网站请求正确的页面(一些内部 url)之前检查用户是否经过身份验证(私人 beta 用户)

if(authenticated());
string url = "http://internalurl"+ Request.Url.LocalPath;

这使我能够将我的正确 URL 保留为面向用户的 URL,并且他们的请求只是转发到完成所有工作的应用程序。

用户不知道请求已被转发,因为他们只看到了 properURL.com/somepage关于从外部站点获取 ActionResult 的基本概念

我也有这个问题,因为它只能部分工作。HTML 是从内部站点检索的,但是对 css 和 js 文件的请求失败,因为当包装站点收到类似的请求时

properURL.com/Content/css/style.css

包装站点尝试在本地查找 style.css 文件,而不是捕获对静态文件的请求并将其视为操作(从内部站点请求)。

我已经尝试了很多方法让 IIS 忽略此文件类型请求并将请求发送给 RouteConfig 以捕获如下路由:

routes.MapRoute(
            "Content", 
            "Content/{*something}",
            new { controller = "Home", action = "Content" } defaults
        );

但是,这无济于事

我也尝试向 Web.config 添加处理程序,但似乎也无济于事。

      <add name="CssFileHandler" path="Content*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

有任何想法吗?

4

1 回答 1

0

您可以为此创建一个 Windows 用户帐户,然后在 IIS 中设置具有该站点权限的基本身份验证。然后用户可以使用它登录以访问该站点。这与您网站的身份验证逻辑无关,因此他们可以匿名浏览或创建帐户并使用 asp.net 身份验证登录网站。此解决方案也不需要对您的应用程序代码进行任何修改。

https://technet.microsoft.com/en-us/library/Cc772009(v=WS.10).aspx

于 2015-08-26T01:40:13.093 回答