C# 仅当点击某些特定控制器时才保留一些cookie

C# 仅当点击某些特定控制器时才保留一些cookie,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个ASP.MVC 5应用程序,其中一个部分(我指的是一个网站部分,并不意味着是一个特定区域或某个特定区域)有一些存储在cookie中的字段,它们仅在该部分中使用。但由于某些原因,我必须在用户离开此部分并前往其他地方时立即使cookies无效,因此,如果他稍后返回此部分,他不会有旧cookies,但会生成新cookies。我想创建一个属性,并用id标记该部分的所有控制器。然后在基类中,我将检查控制器是否具有该特定id,在这种情况下,我不做任何事情,否则将使Cookie无效。但我想这不是一个好

我有一个ASP.MVC 5应用程序,其中一个部分(我指的是一个网站部分,并不意味着是一个特定区域或某个特定区域)有一些存储在cookie中的字段,它们仅在该部分中使用。但由于某些原因,我必须在用户离开此部分并前往其他地方时立即使cookies无效,因此,如果他稍后返回此部分,他不会有旧cookies,但会生成新cookies。我想创建一个属性,并用id标记该部分的所有控制器。然后在基类中,我将检查控制器是否具有该特定id,在这种情况下,我不做任何事情,否则将使Cookie无效。但我想这不是一个好的解决方案,因为向其他部分发出的每个请求都会试图使一些不好的cookie无效(浪费资源!)。一般来说,有没有合适的方法

如果有帮助,所有控制器都从BaseController继承

我知道这似乎是设计中的错误,但无法帮助,因为它的旧代码被迁移到ASP.NET MVC,在这种情况下,真的不能做任何其他事情

下面是代码中的情况:

public class BaseController : Controller 
{
    //OnActionExecuted check if controller has Id = 1, dont do anything else invalidate cookies
}

[GiveSomeId(1)]
public class CookieController : BaseController {}

public class OtherController : BaseController { }

您想将状态保存在cookie中的具体原因是什么?基本上,这个部分可以作为一个简单的用户从Admin访问(在这种情况下,我在currentUser.Id上操作,从那里我可以获得Admin Id)。但如果他选择进入X用户档案,那么我需要以(X.Id)身份操作。因此,我将X个用户id存储在cookie中。后来我问cookie是否有值,获取id并对该值进行操作,否则我们知道管理员正在以简单用户的身份使用此部分,所以他在他的个人资料中,而我是用户管理员id。最后是这样的
var id=CookieService.HasValue(“mycokie”)?CookieService.GetValue(“mycokie”):User.Id。一个选项是在每个操作中使用参数,但这会使代码难看,并且易于从url字符串更改。听起来像是模拟功能。如果是这种情况,您应该尝试在身份验证中间件级别实现模拟。始终是一个棘手的功能,如果实现不正确,可能会产生安全问题。