我正在编写一个帐户管理控制器,并且必须单独处理删除自己用户的帐户:
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(string userName, string confirmButton)
{
MembershipService.DeleteUser(userName);
if (User.Identity.Name.Equals(userName,
StringComparison.InvariantCultureIgnoreCase))
{
FormsAuth.SignOut();
return View("DeleteSelf");
}
else
return RedirectToAction("Index");
}
但是部分视图 LogOnUserControl.ascx 在显示 DeleteSelf 视图时仍然显示刚刚注销的用户名,因为 Request.IsAuthenticated 和 Page.User.Identity 值仍然在 FormsAuth.SignOut() 之后设置。
添加一个新动作 ShowDeleteSelfMessage 可以解决问题,但我不喜欢这个解决方案:
...
{
FormsAuth.SignOut();
return RedirectToAction("ShowDeleteSelfMessage");
}
...
public ActionResult ShowDeleteSelfMessage()
{
return View("DeleteSelf");
}
还有其他想法吗?谢谢!