在2个不同的项目/解决方案/应用程序上创建子域和共享身份验证

问题描述:

我正尝试在asp.net mvc中创建一个具有子域的网站。但我不知道如何做到这一点。在visual studio中设置这个新的解决方案时,最好为每个子域拥有一个不同的项目或者拥有一个项目?这显然有一些直接的好处,例如发布更新到一个子域而不接触其他子域。 这是规范:在2个不同的项目/解决方案/应用程序上创建子域和共享身份验证

1)我有很多应用程序,每个应用程序都有自己的子域,例如, App1,App2,App3。用户将通过登录页面通过主域名登录,并且此身份验证将传递到应用程序。

2)我需要域来认证用户并将认证传递给子域。该子域将只允许访问经过身份验证的用户。 ASP.NET允许将身份验证传递给子域。我需要知道的是如何设置这些项目,以便subdomian知道认证是以这种方式传递的。

3)我决定走下子域路线。

http://App1.domain.com/ http://App12.domain.com/

4)我也想重用代码。有没有什么办法在三个不同的子域上共享masterpage,usercontrols等?

单独的Web应用程序,并在每个web.config中设置domain属性的*域名:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" domain="domain.com" /> 
</authentication> 

这样,当用户在应用程序的一个验证,身份验证cookie将包含域属性,它将被发送到该域和子域中的其他应用程序,并且用户也将自动在其他应用程序上进行身份验证。

几天前想到了类似的情况。我发现了两个选项可用于执行“即时子域注册”

  1. 当根域注册时,子域注册不会花时间!
  2. 重写URL

在案例1我会进* .mydomain.com来在这种情况下,Web服务器(IIS)和使用IIS管理API myuser.mydomain.com重定向到物理路径如www.mydomain.com/myuser/

在第二种情况下我会简单地重写www.mydomain.com/myuser/*到myuser.mydomain.com/*

认证不应该是问题,我会使用一个过滤器或类似的东西。