Asp.net mvc 3 MVC3-从GET请求调用登录方法

Asp.net mvc 3 MVC3-从GET请求调用登录方法,asp.net-mvc-3,authentication,Asp.net Mvc 3,Authentication,我需要能够从GET请求调用内置的[HttpPost]登录方法(在帐户控制器中)。基本上,新帐户将被分配一个临时密码,通过电子邮件发送。用户单击电子邮件中的链接(URL中包含用户ID和临时pw),该链接将在MVC应用程序的帐户控制器中处理。我不知道该怎么办。是否可以从控制器上的GET操作方法重定向到POST logon操作方法?在维护HttpContext对象的同时,如何做到这一点?除了使用user和pw strings参数创建一个新的GET logon方法,并重新创建POST方法中的逻辑(使用M

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

编辑:对于关注本文的任何人,我最终实现的解决方案是:

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

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

谢谢您的回复!实际上,通过web服务生成临时密码、发送电子邮件、验证用户身份并将其标识为新用户的机制已经存在。这里的问题是,我想使用现有的登录后操作方法,这是身份验证的核心所在。我计划使用现有的身份验证和标志,让新用户更改密码。如果无法从GET action方法调用POST action方法,我可能需要将身份验证代码提取到私有方法,并从POST和GET action方法调用它。是否要向用户显示视图?如果是,您可以从GetActionHMMM中呈现的视图中通过jQueryAjax发布文章。。。事实上,这不是个坏主意!弹出一个“欢迎新用户页面”和一个“单击此处加入”按钮,该按钮将所需信息发布回POST方法。我想知道是否会有任何安全问题将临时pw发送到客户端,然后将其发送回?不管怎样,我喜欢你的主意。你为什么不把你最后的评论复制到一个答案上,这样我就可以选择它作为被接受的答案。再次感谢!