2008-12-18 53 views
4

我有一個處理表單帖子的動作,但我想確保他們在動作之前進行了身份驗證。問題是發佈數據丟失,因爲他們將用戶重定向到登錄頁面,然後返回。ASP.NET MVC在授權後保留髮布數據

[AcceptVerbs(HttpVerbs.Post)] 
    [Authorize] 
    public ActionResult AskQuestion(string question) 
    { 
     .... 
    } 

任何想法?

Cheers

回答

2

您需要將表單值和RedirectUrl序列化爲隱藏字段。

認證反序列化隱藏字段中的數據並根據RedirectUrl的值重定向後。

您將需要一個自定義的授權類來處理此問題。

4

POST通常用於添加,更新或刪除數據。當用戶這樣做時,如果需要身份驗證,則應該已經對其進行身份驗證。所以我建議您在POST之前更改應用程序的流程以進行身份​​驗證。

+0

雖然我與你說的話,我不同意應該配置的用戶數據的原則達成一致。它應該被保留,但在用戶可以被認證之前不會被採取行動。否則,當會話超時等事件發生時,這會造成無益的用戶體驗。 – 2008-12-18 12:35:45

+0

我不是建議應該丟棄數據。我建議在開始收集這些數據之前,先對用戶進行身份驗證。例如,不是呈現表單,而是呈現表單的鏈接,並且如果用戶還沒有被認證,則首先將其帶到登錄屏幕。最好先讓他們進行認證,因爲如果在填寫表格之後,他們需要在提交之前進行提名/認證,那麼用戶會感到非常惱火。如果他們不想在那個時候註冊,那麼該網站已經讓他們浪費了時間。 – RedFilter 2010-02-26 12:27:49

-2

您還可以使用session來保存信息...