asp.net mvc:TempData和AuthorizeAttribute
作为这个问题的后续,我想知道我的TempData发生了什么。
情景1:
情景2:
现在,我看不到用户登录验证的原因。 在方案1中,我在TempData中放入了一个“成功”消息,并返回RedirectToAction(“Index”)。 索引操作有一个AuthorizeAttribute - 如果它们没有登录,它们会被重定向到登录屏幕(单独的控制器)。
我希望登录屏幕显示我的消息,但在这种情况下,TempData似乎会被清除。 我误解了TempData的生命周期? 它是否仅适用于同一控制器内的请求?
问题是,如果用户没有登录,AuthorizeAttribute会在周期中引入另一个重定向。您将用户重定向到另一个操作,如果用户未登录,则AuthorizeAttribute将他们重定向到登录页面。 TempData只存在于一个请求周期中,所以额外的重定向(请求)将清空它并且它在登录页面上不可用。
您可以考虑直接将它放在会话中,而不是Session的TempData前端。 只要会议活着,它应该仍然在那里。
[Authorize]
引入了一个额外的重定向,它清除了TempData
(Tvanfosson已经解释了细节)。 因此,为了实现这个目标,例如,您可以在重定向到的方法上使用标志
return RedirectToAction("Confirm", new { status = "Success!" });
(鉴于你有以下路线和行动方法宣布:)
routes.MapRoute("Confirmation",
"Account/Confirm/{status}",
new { controller = "Account", action = "Confirm", status = "" });
public ActionResult Confirm(string status)
{
return View(status);
}
链接地址: http://www.djcxy.com/p/74425.html
上一篇: asp.net mvc: TempData and AuthorizeAttribute
下一篇: Using RowMapper and JdbcTemplate got NullPointerException