0

我需要能够从 GET 请求中调用内置的 [HttpPost] Logon 方法(在帐户控制器中)。基本上,一个新帐户将被分配一个临时密码,通过电子邮件发送。用户单击电子邮件中的链接(在 URL 中包含用户 ID 和临时密码),这将在 MVC 应用程序的帐户控制器中处理。我不知道如何处理这个。是否可以从控制器上的 GET 操作方法重定向到 POST 登录操作方法?在维护 HttpContext 对象的同时如何做到这一点?除了使用用户和密码字符串参数创建一个新的 GET 登录方法并重新创建 POST 方法中的逻辑(使用 MembershipServer 和 FormsService 对象)之外,这似乎是不可行的。

编辑:对于任何关注这篇文章的人,我最终实施的解决方案是:

  • 在评论中使用@Shyju 的建议,我创建了一个新的 GET 操作方法来响应电子邮件链接,该方法返回一个“注册新用户”视图,其中包含传递的用户\pw 的隐藏输入和一个提交按钮。
  • 视图回发到正常的登录方法。如果用户或密码没有被改变,用户将被认证
  • 我添加了一个全局操作过滤器,用于测试用户对象属性“MustChangePassword”。如果为真,它会重定向到更改密码操作方法。这将发生在任何控制器的任何方法上,除了帐户控制器(因此您实际上可以点击登录、chg pw 和其他方法)
  • 然后在“ChangePassword”POST 方法中,成功的密码更改会将“MustChangePassword”属性重置为 false。
4

1 回答 1

1

您可以为每个用户创建一个唯一的字符串(使用 Guid)并将其作为电子邮件中链接的查询字符串发送。在 GET 操作中验证用户表和临时密码表并获取用户记录并将该用户视为已登录用户。

于 2012-09-05T00:21:14.573 回答