0

看过这里的所有帖子,但没有一个能解决我的问题。

我点击 URL:/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 方法,我最终得到一个空白视图。

4

2 回答 2

2
public void KickOutUser()

此方法不返回任何内容,请阅读

所以在这种情况下,你可以做的是返回ActionResult或更好ViewResult,如下所示,

    public ActionResult KickOutUser()
    {
        TempData["ErrorMessage"] = "You need to be logged in to access that content";
        //Redirect to Login
        return RedirectToAction("Login");
    }

希望这可以帮助 :)

于 2012-08-08T05:14:34.770 回答
1

您必须从操作方法(具有 ActionResult 返回类型)返回 RedirectToAction。单独调用 RedirectToAction 不会做任何事情。

但是,这不是您应该处理安全性的方式。相反,您应该使用 AuthorizationFilter 来控制访问。

于 2012-08-08T05:13:01.250 回答