2012-08-27 47 views
0

我有一个.Net应用程序使用ASP.Net成员身份登录控制进行身份验证。我将我的应用程序作为网站发布在IIS7上(www.mysite.com)。一切工作正常。Asp.Net成员登录和机器密钥

现在我创建了一个新的网站,并在其中添加了一个包含我的发布的应用程序(www.site.com/mysite)。在此发布我不能再登录(我得到一个“失败”错误)。在互联网上进行了大量搜索之后,我发现问题是由我的应用程序中的自动生成的机器密钥引起的(我没有在web.config中设置机器密钥)。 现在我无法设置机器密钥,因为我已经在我的应用程序中创建了用户,并且如果设置机器密钥,他们将无法再登录。

我的问题是如何强制新网站(www.site.com/mysite)使用与第一个相同的机器密钥?我曾尝试设置相同的AppPool,但没有运气。

备注:我有其他出版物可以正常使用,并使用相同的机器密钥,但它们都是网站上的根应用程序(如www.mysecondsite.com)。会导致应用程序生成新密钥的此配置wwww.site.com/mysite上发生了什么/有什么不同?

回答

0

不知道为什么没有人回答这个问题。 您可以直接在Web.Config中输入。或者输入值。 小心......任何使用加密技术的应用程序数据作为关键点之后都会中断。 一般情况下,您需要为每个站点设置机器并将其保留。 验证密钥用于加密。即密码匹配不对称的方法。解密数据时获得的原始内容(对称)

<system.web> 
    <machineKey decryptionKey="3815E48D71E4A60848B5213F1BBD7A2FEDAB229873421929" 
validationKey="3CB08C9B349194F28A340FBDA33BC94F7037FACCF9973CAFCAE4501D7F903BA7C539219FDCA77E2F864D848A60F249B639ED28925B90B3F7EECBB9A70EBE1607" /> 
</system.web> 
+0

谢谢你的解决方案@soadyp但这不解决我的问题 解密密钥。事实上,如果从一开始就设置了web.config中的machineKey条目,它就可以避免所有这些问题。但是当我第一次发布应用程序和用户在系统中创建的我无法修改的时候,我没有指定机器密钥。现在我无法设置机器密钥,因为这会使用户无法使用旧密码登录。我的问题是我有没有改变用户密码的机器密钥设置解决方案? – user1626401

+0

如果这些网站使用了机器密钥和加密。那么你不能检索密码。 (这对黑客来说是一项巨大的任务)。如果更改机器密钥,则无法访问密码。您可以使用代码自定义登录工具,尝试2个机器密钥。这是一个大型的编程练习,因为它需要一个定制的会员供应商实施。您可能希望编辑原始问题,提供更多关于您想要/需要做什么的详细信息。这听起来不好听。 –