查看了这里的所有帖子,但没有一个帖子正在解决我的问题。
我点击了网址:/ Users / KickOutUser
public void KickOutUser()
{
TempData["ErrorMessage"] = "You need to be logged in to access that content";
//Redirect to Login
RedirectToAction("Login");
}
/*user controller*/
public ActionResult Login()
{
//E.G ErrorMessage comes from HandleUnauthenticatedUser
ViewData["ErrorMessage"] = TempData["ErrorMessage"] ?? null;
return View();
}
通过调试,我可以看到它点击第一个方法,然后重定向,但重定向调用从不调用Login方法,我最终得到一个空白视图..
答案 0 :(得分:2)
public void KickOutUser()
此方法未返回任何内容,请阅读this
所以在这种情况下,您可以做的是返回ActionResult
或更好ViewResult
,如下所示,
public ActionResult KickOutUser()
{
TempData["ErrorMessage"] = "You need to be logged in to access that content";
//Redirect to Login
return RedirectToAction("Login");
}
希望这会有所帮助:)
答案 1 :(得分:1)
您必须从操作方法(具有ActionResult返回类型)返回RedirectToAction。单独调用RedirectToAction将不会执行任何操作。
但这不是你应该如何处理安全问题。您应该使用AuthorizationFilter来控制访问。