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

时间:2011-09-23 06:13:14

标签: .net asp.net asp.net-mvc asp.net-authentication

我正在尝试在asp.net mvc中创建一个包含子域名的网站。但我不知道该怎么做。在visual studio中设置这个新解决方案时,最好是为每个子域创建一个不同的项目还是有一个项目?显然有一些直接的优势,例如发布更新到一个子域而不触及其他子域。 这是规范:

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

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

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

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

4)我也在考虑可重用的代码。有没有办法在三个不同的子域上共享母版页,用户控件等?

2 个答案:

答案 0 :(得分:2)

将每个集合中的Web应用程序和每个集合中的domain属性分隔到顶级域名:

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

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

答案 1 :(得分:1)

前几天想到了类似的情况。我找到了两个选项来进行“动态子域注册”

  1. 注册根域时,子域注册没有时间!
  2. 重写网址
  3. 在案例1中,我会在这种情况下将* .mydomain.com转发到网络服务器(IIS),并使用IIS管理API将myuser.mydomain.com重定向到物理路径,例如www.mydomain.com/myuser /

    在案例2中,我只需将www.mydomain.com/myuser/*重写为myuser.mydomain.com / *

    身份验证不应该是问题,我会使用过滤器或类似的东西。