我有一个使用表单身份验证的网站。问题是我在相同的生产服务器上多次安装了该站点,因为我需要有几个不同的登录页面(在这种情况下基于域)。在域特定登录页面之后,该站点的其余部分是相同的。显然,这需要大量维护,因为每个新版本必须在服务器上多次安装(改变web.config文件中的登录页面)。
所以我认为有一种方法可以在磁盘上的1个文件夹上安装网站,在IIS上有一个网站接收所有需要的域并制作一些http模块(或其他一些解决方案),我可以在其中它是域的列表和该域的表单身份验证。这样,每个站点使用的登录页面都会根据域进行更改,同时仍然只在服务器上维护一个站点。
由于 Dani Avni
答案 0 :(得分:1)
我已经看到了很多方法,其中很多方面取决于你在IIS中设置的方式。
如果所有域都在同一个IIS网站上,最常见的解决方案是创建一个httpmodule,甚至是一个实际的.aspx页面,它会加载配置并根据请求的URL将用户发送到正确的登录页面。如果您希望用户URL保持不变,您甚至可以执行“Server.Transfer()”。然后在web.config中,您仍然设置一个登录页面。只需确保每个其他登录页面都允许匿名用户访问。
如果所有域都是单独的IIS站点,我建议此时只保留不同的站点副本。但真正的问题是为什么你需要不同的登录。
答案 1 :(得分:0)
我的工作场所有几个Web应用程序,它们完全符合您的描述。我们使用了几种方法,具体取决于具体情况。
我们使用的更常见的方法是让IIS上的所有实际站点指向同一目录。登录的逻辑获取URL,确定正在请求哪个客户端站点,并在登录时将其考虑在内。但是,所有客户端站点的实际登录页面都是相同的,因此它只是确定要使用的数据库。
如果你想做任何比这更好的事情,我们使用的另一种方法是创建我们自己的MembershipProvider
,此时你基本上可以做你想做的任何事情。如果ASP.NET身份验证提供程序正在调用您的类,则应该可以访问HttpContext.Current
(您可以将Web.config中的成员资格提供程序设置为您的提供程序)。