ASP.NET认证 - 多应用程序和多用户数据库

问题描述:

我们有一个简单的ASP.NET应用程序,它使用ASP.NET SqlMembershipProvider,并且都很棒。ASP.NET认证 - 多应用程序和多用户数据库

我们想要在同一台服务器上创建第二个应用程序,也使用SqlMembershipProvider,但使用不同的“applicationName”,以便两个应用程序之间的用户帐户保持独立。

它看起来像这样做将通过使两个不同的应用程序域(即他们都有自己的web.config),但我希望只是把它们放在不同的目录,所以我没有3网.configs(每个应用程序和主应用程序都有一个)必须保持同步。所以我后为:

/web.config 
/APP1 (uses membership provider in /web.config, with userlist A) 
/APP2 (uses membership provider in /web.config, with userlist B) 

它看起来简单定义使用不同“的applicationName”值的多个成员资格提供。

但是,您如何告诉system.web.authentication节点要使用哪个成员资格提供程序?

据我所知,它将始终使用默认值。

使用您的结构,我认为你必须实现上会员提供自己的包装,有效地创建自己的供应商,只是衬层的请求,并根据修改的应用程序目录中的应用程序名称值。

如果我正确地读出你的情况下,它听起来就像是两个应用程序之间的唯一区别是“应用程序名称”属性。

因此,如果您设置,在各两个应用程序中的的Application_Start(Global.asax中),你应该是金色的。

protected void Application_Start(object sender, EventArgs e) 
{ 
    Membership.Provider.ApplicationName = "test"; 
} 
+0

不会有多个Global.asax文件(即一个在APP1文件夹和一个在APP2文件夹中)需要单独的web.config文件? (我的假设是,单独的web.config文件中实际上是什么定义一个单独的“应用程序”) – DougN 2011-02-19 14:45:02

+0

没有,独立web.config文件中并没有使它成为一个单独的应用程序。在IIS中通过转到虚拟目录的属性并单击应用程序设置部分中的创建按钮来配置应用程序。是的,你需要使用两个web.configs。 – Greg 2011-02-21 18:57:06

+0

有什么原因的Application_Start逻辑不能稍微复杂一些,刚开的应用程序根目录,并使用它来确定一个合适的名字?因此,具有不同根的两个应用程序可能会在没有多个web.config文件的情况下获得不同的名称 – Chris 2012-01-26 10:11:47