我需要能够从 GET 请求中调用内置的 [HttpPost] Logon 方法(在帐户控制器中)。基本上,一个新帐户将被分配一个临时密码,通过电子邮件发送。用户单击电子邮件中的链接(在 URL 中包含用户 ID 和临时密码),这将在 MVC 应用程序的帐户控制器中处理。我不知道如何处理这个。是否可以从控制器上的 GET 操作方法重定向到 POST 登录操作方法?在维护 HttpContext 对象的同时如何做到这一点?除了使用用户和密码字符串参数创建一个新的 GET 登录方法并重新创建 POST 方法中的逻辑(使用 MembershipServer 和 FormsService 对象)之外,这似乎是不可行的。
编辑:对于任何关注这篇文章的人,我最终实施的解决方案是:
- 在评论中使用@Shyju 的建议,我创建了一个新的 GET 操作方法来响应电子邮件链接,该方法返回一个“注册新用户”视图,其中包含传递的用户\pw 的隐藏输入和一个提交按钮。
- 视图回发到正常的登录方法。如果用户或密码没有被改变,用户将被认证
- 我添加了一个全局操作过滤器,用于测试用户对象属性“MustChangePassword”。如果为真,它会重定向到更改密码操作方法。这将发生在任何控制器的任何方法上,除了帐户控制器(因此您实际上可以点击登录、chg pw 和其他方法)
- 然后在“ChangePassword”POST 方法中,成功的密码更改会将“MustChangePassword”属性重置为 false。