2010-07-22 139 views
1

這是我的應用程序當前的用戶註冊工作流程。在動作和應用程序行爲之間共享數據

  1. 登記表(GET /註冊)
  2. 提交表單(POST /寄存器)成功後
  3. ,重定向路徑爲 「/ registerSuccess」
  4. 在(GET/registerSuccess)的看法,我想以顯示「用戶名已成功註冊」的消息。

控制器操作:

public ActionResult Register() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult Register(string name, string password, string confirmPassword) 
{ 
    TempData["registered_user"] = name; 
    return RedirectToRoute("RegisterSuccess"); 
} 

public ActionResult RegisterSuccess() 
{ 
    return View(); 
} 

RegisterSuccess查看

<h2><%: TempData["registered_user"] %> has been registered successfully.</h2> 

它除了做工精細的用戶名是空的,當用戶刷新頁面(GET/registerSuccess)

它在其他應用程序中是否正常行爲?或者我應該做些什麼? :)(這是我的寵物項目,並要求由我:P

更新:實際上,存在被註冊的用戶需要管理員的批准,一個步驟。所以,我不能讓用戶登錄成功後登錄。我目前使用基於cookie的FormsAuthentication來跟蹤登錄用戶。

我更喜歡使用PRG模式,而不是在提交表單中顯示Flash消息。

回答

1

這是正常的行爲..當用戶'刷新'的頁面直接請求不通過你的註冊功能,所以registered_user密鑰消失了。當您進行初始註冊時,您應該使用會話標記(例如cookie)來跟蹤成功登錄的用戶。

Using cookies tutorial是開始

如果你要與發送出的每個請求使用HTTP認證(說基本認證),那麼瀏覽器提交的用戶名和密碼(在基本身份驗證明文)的好地方401未經授權(見HTTP/1.0 Protocol

1

嗯......

通常你應該想到一個SSO解決方案,包含您的用戶的身份驗證(令牌)的。 然後您只需要顯示當前已通過身份驗證的用戶(因爲完成的註冊通常會登錄到用戶)

其他解決方案是將用戶添加到url中,以便成功頁面包含所有參數。

/registerSuccess/<username> 

(也許檢查,即登錄的用戶是剛剛註冊,並且是一樣的)

爲自己的有趣的項目,我會做第二個。很簡單。

相關問題