0

我有一个具有以下操作的家庭控制器:

public class HomeController : Controller
{
    [Authorize]
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Logoff()
    {
        HttpContext.Session.Remove("LogonTicket");
        HttpContext.Session.Remove("PID");
        return View("Index");
    }

现在,当我使用注销操作注销时,我希望索引的授权属性生效,但当我在注销操作中返回索引视图时它不会生效。

我将如何处理?

我正在使用自定义 MembershipProvider,但不确定如何在其中添加注销功能。

4

2 回答 2

1

您应该重定向,而不是直接返回视图:

public ActionResult Logoff()
{
    HttpContext.Session.Remove("LogonTicket");
    HttpContext.Session.Remove("PID");
    return RedirectToAction("Index");
}

返回视图直接将视图的标记发送给客户端,并且Authorize过滤器根本不会被调用。

于 2012-08-17T20:50:01.953 回答
0

在 AccountController 注销操作中完成。它们现在也是基本控制器中的公共“全局变量”。

    public ActionResult LogOff()
    {
        FormsAuthentication.SignOut();
        LogonTicket = null;
        ParticipantID = null;
        return RedirectToAction("Index", "Home");
    }
于 2012-08-21T15:49:01.210 回答