我正在构建一个接近完成的应用程序,我正在添加最后一层安全性和功能,以便在注册时通过电子邮件发送新用户的确认令牌。获取初始注册确认令牌非常简单。令牌传递给视图,并发送电子邮件。但是,有两种情况我需要重新发送该令牌,其中包括:
第一个场景在页面上有一个按钮,可以轻松嵌入令牌,这使得这个任务变得简单。但是,登录页面将不具有此功能,服务器将只知道用户的电子邮件地址。保持DRY
原则我将其合并为一种方法,但是当我可以获得用户注册的电子邮件地址时,我找不到合适的WebSecurity
或Membership
来电确认令牌。
我尝试使用下面的Expression从成员资格表中请求这个,但是会抛出一个异常,说明LastPasswordFailureDate
是null
(这是预期的),所以这是不可能的
Expression<Func<MembershipModel, bool>> query = q => q.UserId == userId;
我看过类似于Kevin Junghans的博客(下图),但WebSecurity.GetConfirmationToken
似乎不再受支持,因为我无法在任何地方找到它。
我甚至已经看到了下一个链接,它指出了StackOverflow上的一个问题,说实话我不想在这个庄园中实现它,因为我花费了大量的时间来整合EntityFramework存储库模式为我做这一切。
Resend Confirmation Email with WebSecurity
我想知道是否有人在没有在应用程序本身内编写SQL的情况下获得确认令牌的任何建议。
答案 0 :(得分:0)
虽然今天早上再考虑一下,但我终于意识到为什么LastPasswordFailureDate
正在回复提到的Exception
。基本上我相信我是一个白痴,忘了在我的模型中添加nullable
引用DateTime
字段。我无法在几个小时内对此进行测试,但在任何一种情况下都会更新此答案/问题。