这是我的应用程序当前的用户注册工作流程。
控制器操作:
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 View
<h2><%: TempData["registered_user"] %> has been registered successfully.</h2>
工作正常,但当用户刷新页面时,用户名为空(GET / registerSuccess)。
在其他应用程序中是否正常?或者我应该为此做点什么? :)(这是我的宠物项目和要求来自我:P )
更新:实际上,还有一个步骤是注册用户需要管理员的批准。因此,我无法让用户在注册成功后登录。我目前正在使用基于cookie的FormsAuthentication来跟踪登录用户。
我更喜欢使用PRG模式,而不是在提交表单中显示Flash消息。
答案 0 :(得分:1)
嗯...
通常,您应该考虑一个SSO解决方案,该解决方案包含您的用户身份验证(令牌)。 那么你只需要显示当前经过身份验证的用户(因为完成的注册通常会登录用户)
其他解决方案是,在网址中添加用户,以便成功页面包含所有参数。
/registerSuccess/<username>
(也许检查一下,登录的用户刚刚注册,并且是相同的)
对于你自己有趣的项目,我会做第二个。简直就是这么简单。
答案 1 :(得分:1)
这是正常的行为..当用户'刷新'时,不是通过你的注册函数直接请求页面,所以那时registered_user密钥就消失了。当您进行初始注册时,您应该使用会话标记(例如cookie)来跟踪成功登录的用户。
Using cookies tutorial是一个很好的起点
如果您要使用HTTP身份验证(比如Basic Auth),那么浏览器会向每个发出401 Unauthorized的请求提交用户名和密码(基本身份验证的明文)(请参阅HTTP/1.0 Protocol)