2010-07-22 107 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> 

(也许检查,即登录的用户是刚刚注册,并且是一样的)

为自己的有趣的项目,我会做第二个。很简单。

相关问题