在动作和应用程序行为之间共享数据
问题描述:
这是我的应用程序当前的用户注册工作流程。在动作和应用程序行为之间共享数据
- 登记表(GET /注册)
- 提交表单(POST /寄存器)成功后
- ,重定向路径为 “/ registerSuccess”
- 在(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消息。
答
这是正常的行为..当用户'刷新'的页面直接请求不通过你的注册功能,所以registered_user密钥消失了。当您进行初始注册时,您应该使用会话标记(例如cookie)来跟踪成功登录的用户。
如果你要与发送出的每个请求使用HTTP认证(说基本认证),那么浏览器提交的用户名和密码(在基本身份验证明文)的好地方401未经授权(见HTTP/1.0 Protocol)
答
嗯......
通常你应该想到一个SSO解决方案,包含您的用户的身份验证(令牌)的。 然后您只需要显示当前已通过身份验证的用户(因为完成的注册通常会登录到用户)
其他解决方案是将用户添加到url中,以便成功页面包含所有参数。
/registerSuccess/<username>
(也许检查,即登录的用户是刚刚注册,并且是一样的)
为自己的有趣的项目,我会做第二个。很简单。