C# ASP Net MVC使用全局变量在控制器之间传递数据

C# ASP Net MVC使用全局变量在控制器之间传递数据,c#,asp.net-mvc,oop,C#,Asp.net Mvc,Oop,我在学习C#,我在这里尝试做一些事情,我有一个aspnet mvc应用程序,它包含身份验证,我想在他登录时获取用户信息,并保存在一个全局变量中,以便访问任何控制器或任何服务,所以我创建了一个BaseController,它继承自控制器类,我的每个控制器都继承自BaseController,当我登录时,我保存在BaseController内,但当我从控制器内的BaseController获取数据时,它返回null 有没有人能给我一个例子来说明如何做到这一点,或者告诉我这是否是一个好的做法?只要用户

我在学习C#,我在这里尝试做一些事情,我有一个aspnet mvc应用程序,它包含身份验证,我想在他登录时获取用户信息,并保存在一个全局变量中,以便访问任何控制器或任何服务,所以我创建了一个BaseController,它继承自控制器类,我的每个控制器都继承自BaseController,当我登录时,我保存在BaseController内,但当我从控制器内的BaseController获取数据时,它返回null


有没有人能给我一个例子来说明如何做到这一点,或者告诉我这是否是一个好的做法?

只要用户仍然经过身份验证,那么您就可以使用称为会话变量的变量。下面是存储可在控制器之间访问的字符串的示例

Session["AccessLevel"] = "ADMIN";

一旦用户注销或超时,垃圾回收将删除该变量。我尝试在会话变量中存储几GB的信息。

MVC是无状态的。如果不使用cookies、session或tempdata等工具,则无法将变量从一个会话保存到另一个会话。有一些内置的、本机的方法来解决您想要的问题,这些方法比尝试构建自己的方法更安全。我建议研究已有的无数方法。如上所述,这是一个很好的指导资源。因此,谢谢,我将研究更多关于iTunesr登录信息的信息,这些信息已经在任何控制器中可用(经过身份验证)。只要在你的操作中调用
User
,你就会得到你所需要的。但是,我创建了一个带有“无身份验证”的空白项目。会话状态存储在cookie中,因此它可能被劫持,但是如果你在站点上使用SSL,你将被罚款-“用户注销”和“(会话)超时”是不同的概念。上面的代码与登录/注销无关。