2012-09-05 34 views
0

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

编辑:对于任何人以下这个岗位,解决我结束了实施是:

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

回答

1

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

+0

感谢您的回复!实际上,通过Web服务,已经有了生成临时密码,发送电子邮件,验证和识别用户为新密码的机制。这里的问题是,我想使用现存的登录操作方法,其中身份验证的勇气在其中。我打算使用带有标志的现有认证来让新用户更改密码。如果无法从GET操作方法调用POST操作方法,那么我可能需要将认证代码提取到私有方法,并从POST和GET操作方法中调用它。 –

+1

你打算向用户展示一个视图吗?如果是的话,你可以从GET操作呈现的视图执行jQuery ajax的POST – Shyju

+0

嗯......实际上,这不是一个坏主意!用“点击此处加入”按钮抛出一个“欢迎新用户页面”按钮,并将所需信息发送回POST方法。我想知道是否有任何安全问题将客户端的温度传递给客户端,只能将其发送回客户端?无论如何,我喜欢你的想法。你为什么不把你的最后评论复制到答案中,以便我可以选择它作为接受的答案。并再次感谢! –