SimpleMembership - WebSecurity GetConfirmationToken问题

时间:2014-11-04 23:02:55

标签: c# asp.net-mvc entity-framework security simplemembership

我正在构建一个接近完成的应用程序,我正在添加最后一层安全性和功能,以便在注册时通过电子邮件发送新用户的确认令牌。获取初始注册确认令牌非常简单。令牌传递给视图,并发送电子邮件。但是,有两种情况我需要重新发送该令牌,其中包括:

  • 当用户被重定向到名为“注册步骤二”的视图时。
  • 当用户在确认其帐户之前尝试登录时。

第一个场景在页面上有一个按钮,可以轻松嵌入令牌,这使得这个任务变得简单。但是,登录页面将不具有此功能,服务器将只知道用户的电子邮件地址。保持DRY原则我将其合并为一种方法,但是当我可以获得用户注册的电子邮件地址时,我找不到合适的WebSecurityMembership来电确认令牌。

我尝试使用下面的Expression从成员资格表中请求这个,但是会抛出一个异常,说明LastPasswordFailureDatenull(这是预期的),所以这是不可能的

Expression<Func<MembershipModel, bool>> query = q => q.UserId == userId;

我看过类似于Kevin Junghans的博客(下图),但WebSecurity.GetConfirmationToken似乎不再受支持,因为我无法在任何地方找到它。

Retrieving Confirmation Token

我甚至已经看到了下一个链接,它指出了StackOverflow上的一个问题,说实话我不想在这个庄园中实现它,因为我花费了大量的时间来整合EntityFramework存储库模式为我做这一切。

Resend Confirmation Email with WebSecurity

我想知道是否有人在没有在应用程序本身内编写SQL的情况下获得确认令牌的任何建议。

1 个答案:

答案 0 :(得分:0)

虽然今天早上再考虑一下,但我终于意识到为什么LastPasswordFailureDate正在回复提到的Exception。基本上我相信我是一个白痴,忘了在我的模型中添加nullable引用DateTime字段。我无法在几个小时内对此进行测试,但在任何一种情况下都会更新此答案/问题。