2

我有一个使用 .Net Membership 和 SQL Server 提供程序的 ASP.Net 网站,因此用户和角色存储在 Aspnet_regsql.exe 创建的 SQL 表中。

这种架构是完全独立且可移植的,还是其中的用户以某种方式绑定到他们创建帐户的特定网站?

换句话说,如果我们在 dev 或 UAT 中创建一堆用户,将这个数据库备份并恢复到另一个服务器,以另一个域名访问,它是否仍然可以正常工作?

当我们移动数据库时,我们看到了一些奇怪的行为,比如用户失去了组从属关系等,我很好奇这个数据库的可移植性和环境无关性。我偷偷怀疑机器密钥或域绑定了某些东西。

4

2 回答 2

0

用户被绑定到应用程序名称。您可以检查它并查看每个用户链接到的应用程序名称是否对应于生产服务器上 web.config 上的应用程序名称。

除此之外,当您将成员资格移植到另一个数据库时,您应该确保您不仅使用表,而且还使用所有存储过程。如果出于任何原因,您只是在移植数据库架构,则应在移植之前运行 Aspnet_regsql.exe。

于 2010-04-23T13:57:37.210 回答
0

是的,它们应该可以正常工作

唯一需要注意的地方是密码管理。.Net会员提供商可以使用机器特定的密钥来加密或散列密码。但是有一种解决方法,您可以告诉 asp.net 应用程序使用特定的机器密钥,而不是自动生成的机器特定的密钥。

在我的应用程序中,我对我的密码进行了加密,并且我已经指定了我的机器密钥,如下所示用于加密/解密。当我这样做时,我可以将我的开发数据库移植到生产服务器,或者也可以非常轻松地将数据库从一台生产服务器迁移到另一台。

  <machineKey validationKey="<your-validation-key>" decryptionKey="<your-decryption-key>" validation="SHA1"/>

在使用 MembershipProviders 时,您无需担心迁移问题。

于 2010-04-23T14:07:13.677 回答