我正在为私人测试版准备一个网站。该网站可以匿名使用,也可以允许用户登录(使用身份)。
在私人测试期间,我需要整个网站受密码保护,以便只有拥有密码的用户才能访问主网站。一旦他们到达那里,他们可以选择浏览网站"匿名"或者他们可以注册实际帐户并使用帐户浏览。
无论是否
,我都在解决这个问题解决方案必须不干扰我当前的代码库,这就是为什么我需要它来完全包装我的应用程序。一旦测试完成,我将能够删除包装(并且可能重新指定一些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" />
有什么想法吗?
答案 0 :(得分:0)
您可以为此创建一个Windows用户帐户,然后在IIS中设置具有该站点权限的基本身份验证。然后用户可以使用它登录以访问该站点。这与您站点的身份验证逻辑无关,因此他们可以匿名浏览或创建帐户并使用asp.net身份验证登录站点。此解决方案也不需要对您的应用程序代码进行任何修改。
https://technet.microsoft.com/en-us/library/Cc772009(v=WS.10).aspx