我为 Azure 云编写了一个 Web 应用程序,该应用程序使用表存储 asp.net 成员资格提供程序来确保安全。
我可以在 Developer Fabric 中本地运行它,并让应用程序指向使用云中的存储帐户,例如在 web.config 中
<membership defaultProvider="TableStorageMembershipProvider" userIsOnlineTimeWindow="20">
<providers>
<clear/>
<add name="TableStorageMembershipProvider"
type="Microsoft.Samples.ServiceHosting.AspProviders.TableStorageMembershipProvider"
description="Membership provider using table storage"
applicationName="AspProvidersDemo"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
requiresUniqueEmail="true"
passwordFormat="Hashed"/>
</providers>
</membership>
并在此处的 ServiceConfiguration 中:
<Setting name="DataConnectionString" value="DefaultEndpointsProtocol=https;AccountName=MyAccount;AccountKey=MyAccountKeyHere" />
它可以在本地运行,但是当我部署到云时,由于密码无效,即使我使用与 DevFabric 中相同的帐户和代码,我也无法登录。我唯一能想到的是,这与 Salt 有关,因为我尝试登录的帐户是在本地创建的。
有谁知道这可能是什么原因造成的?我很高兴我可以遍历并在各处放置跟踪语句 - 只是想节省一些时间!
更新:使用明文密码时似乎可以工作。我的本地计算机和 Azure 计算哈希值的方式肯定有所不同。
最佳答案
我认为你本地的机器 key 与 Azure 不同。您在开发结构上创建的指向 Azure 存储的用户将使用与 Windows Azure 中使用的不同的计算 secret 钥。
尽管此处描述的具体问题已在 1.4 中修复,但我仍然认为,如果您使用本地指向与 Windows azure 服务相同的存储帐户,那么您可能仍需要执行以下操作 - http://msdn.microsoft.com/en-us/library/gg494983.aspx
关于c# - 使用表存储的 Azure 成员(member)资格提供商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177639/