MVC3 - 从GET请求调用登录方法

时间:2012-09-05 00:13:43

标签: asp.net-mvc-3 authentication

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

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

  • 在评论中使用@ Shyju的推荐,我创建了一个新的GET操作方法来响应电子邮件链接,该方法返回一个“注册新用户”视图,其中包含传递的用户\ pw和提交按钮的隐藏输入。
  • 视图回发到正常的登录方法。如果用户或pw未被更改,则将对用户进行身份验证
  • 我添加了一个全局操作过滤器,用于测试用户对象属性“MustChangePassword”。如果为true,则重定向到更改密码操作方法。任何控制器的任何方法都会发生这种情况,除了帐户控制器(所以你可以实际登录登录,chg pw和其他方法)
  • 然后在“ChangePassword”POST方法中,成功的pw更改会将“MustChangePassword”属性重置为false。

1 个答案:

答案 0 :(得分:1)

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