我有一个ASP.Net网站,使用.Net成员资格和SQL Server提供程序,因此用户和角色存储在Aspnet_regsql.exe创建的SQL表中。
这个架构是完全自包含和可移植的,还是用户以某种方式绑定到他们创建帐户的特定网站?
换句话说,如果我们在dev或UAT中创建一堆用户,备份并将此数据库还原到另一个服务器,在另一个域名下访问,它是否仍能正常工作?
当我们移动数据库时,我们看到了一些奇怪的行为,比如用户失去了群组关系等等,而且我很好奇这个数据库的可移植性和环境无关。我怀疑机器密钥或域绑定了什么。
答案 0 :(得分:0)
用户绑定到应用程序名称。您可以检查它,看看每个用户链接的应用程序名称是否与生产服务器上web.config上的应用程序名称相对应。
除此之外,当您将成员资格移植到另一个数据库时,您应该确保不仅要使用表,还要使用所有存储过程。如果出于任何原因,您只是移植数据库模式,则应在移植之前运行Aspnet_regsql.exe。
答案 1 :(得分:0)
是的,他们应该可以正常工作。
只有您需要注意的地方才是密码管理。 .Net 会员提供商可能会使用计算机专用密钥来加密或散列密码。但是有一个解决方法,你告诉asp.net应用程序使用特定的机器密钥而不是自动生成的机器特定密钥。
在我的应用程序中,我保持密码加密,并且我已将我的机器密钥指定为以下加密/解密。当我这样做时,我可以将开发数据库移植到生产服务器,或者也可以非常容易地将数据库从一个生产服务器迁移到另一个生产服务器。
<machineKey validationKey="<your-validation-key>" decryptionKey="<your-decryption-key>" validation="SHA1"/>
使用MembershipProviders时,您无需担心迁移问题。