切入正题,而不是强迫任何人阅读冗长的解释,我知道微软在其许多技术方面的安全默认设置存在问题。我使用 ASP.NET 和 MVC,实际上已经准备好使用 Microsoft 的默认设置(如 IdentityService)——并且正在研究它的更高级功能——所以我可以掌握它们。但后来我偶然发现了 Brock Allen 的博客文章——他解释说微软在这些方面的默认设置还不够好。所以,这就是我发现他的 MembershipReboot 项目的地方。
我一直在实现这个库,起初并没有那么成功,但已经获得了牵引力,并且取得了一些成功。我从根本不工作到遇到问题。我修复了所有这些(在一些帮助下)。现在,登录和注册页面工作,注册工作以及发送验证电子邮件,它们都工作。这就是我现在所困的地方。收到验证电子邮件后,单击电子邮件中的链接 - 我转到 localhost:####/ChangeEmail/(验证密钥) 页面 - 这就是我的新问题所在。我正在使用从 (SingleTenant) 示例代码中获取的一些代码。
当它进入该页面时,在默认设置中,它告诉我它有“System.ArgumentException:account”,它指向 ChangeEmailController 的 Confirm ActionResult 中的代码“if (account.HasPassword())”。我在该 ActionResult 中的 if 语句上方添加了一行代码 - “Redirect("http://" + account.Email);" - 只是看看它会做什么。加上那个,它给了我另一个(相关的)错误 - “对象引用未设置为对象的实例。” 它指向了我添加的确切代码。
所以,这真的让我很沮丧,很明显系统可以加载库,可以实际注册用户,可以使用正确的验证密钥发送电子邮件(我将它与数据库进行了比较条目,它是相同的代码)。但是,当点击验证方法的链接时 - 它似乎不想从数据库中检索相同的帐户数据。我觉得这很奇怪。