C#MVC网站包含私人beta测试

时间:2015-08-26 01:34:46

标签: c# asp.net-mvc-4 asp.net-mvc-routing beta iis-handlers

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

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

无论是否

,我都在解决这个问题
  • 可以将我的整个网站包装在安全/私密环境中的第三方网站
  • 一个简单的"看门人"接收网站所有请求的应用程序,如果用户通过身份验证,则将其转发到完整的网站
  • 一些其他解决方案(可能使用代理服务器,如nginx / HAproxy或其他完全不同的东西)

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

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

我尝试创建自己的包装

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

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

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

用户不知道请求是转发的,因为他们只看到properURL.com/somepage Basic concept on getting ActionResult from External site

我也有这个问题因为它只是部分有效。 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" />

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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