【发布时间】:2016-03-31 07:31:55
【问题描述】:
为了切入正题,而不是强迫任何人阅读冗长的解释,我知道在涉及到许多技术时,Microsoft 的安全默认设置存在问题。我使用 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);" - 只是看看它会做什么。添加后,它给了我另一个(相关的)错误 - “对象引用未设置为对象的实例。”它指向了我添加的确切代码。
所以,我真的很沮丧,很明显,系统在加载库时工作,它在能够实际注册用户时工作,它在能够发送带有正确验证密钥的电子邮件时工作(我比较了它到数据库条目,它是相同的代码)。但是,当单击验证方法的链接时 - 它似乎不想从数据库中检索相同的帐户数据。我觉得这很奇怪。
【问题讨论】:
-
您应该发布您的代码,以便我们告诉您问题出在哪里
标签: entity-framework security asp.net-mvc-5 membershipreboot