【问题标题】:WebSecurity with multiple databases具有多个数据库的 WebSecurity
【发布时间】:2014-03-27 14:17:28
【问题描述】:

我有一个连接到多个数据库的 c# mvc.net 应用程序。 澄清一下,根据 url 的子域,应用程序将连接到特定的数据库。这是通过将 web.config 中的 defaultConnectionFactory 设置为 IDbConnectionFactory 的自定义实现来完成的。这一切都很好。

但是,我在使用 WebSecurity 时遇到了问题。 所有 WebSecurity 功能(例如 Login、CreateAccount 等)都基于在应用程序启动时初始化的数据库

protected void Application_Start()
{
    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
    //other initialisation stuf

根据 WebMatrix,InitializeDatabaseConnection 函数应在应用程序启动时调用一次,因此始终指向同一个数据库。

我想要的是,根据 httpRequest,所有 WebSecurity 工作都将在链接到子域的数据库上完成。

有人对我如何应对这种情况有任何建议吗? 我应该覆盖 WebSecurity 并根据 httpRequest 对其进行初始化吗? 或者我应该使用自定义的 SimpleMembership 提供程序做些什么?

提前致谢

【问题讨论】:

    标签: c# asp.net-mvc webmatrix


    【解决方案1】:

    总的来说,这似乎是个坏主意。但是,如果您有少量子域,那么您可以运行多个网站,每个网站处理一个子域。我认为服务器上的负载不会有任何不同。您将拥有能够独立启动或关闭子域的优势。当然,您必须多次部署该软件。

    现在,如果您有很多子域:miamiFl.blahblah.com、NewYorkNewYork.blahblah.com... 那么再看我的第一点。祝你好运:)

    【讨论】:

    • 整个想法是让一个应用程序处理多个客户。每个客户都应该有自己的数据库(到目前为止这很好用......)。客户可以自己注册,应用程序将创建新的数据库。唯一的问题是 WebSecurity 使用存储在 Membership.Provider 中的静态 SimpleMembershipProvider。我想我必须编写一个可以处理多个成员的自定义成员提供程序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2017-07-19
    相关资源
    最近更新 更多