2012-09-05 32 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方法。我想知道是否有任何安全問題將客戶端的溫度傳遞給客戶端,只能將其發送回客戶端?無論如何,我喜歡你的想法。你爲什麼不把你的最後評論複製到答案中,以便我可以選擇它作爲接受的答案。並再次感謝! –