如何存储一个值,以便在整个会话期间在MVC中的任何地方使用

本文关键字:会话 方使用 任何地 MVC 存储 何存储 一个 | 更新日期: 2023-09-27 18:18:01

嘿,这里需要帮助

我想在我的MVC项目中存储一些值,通过会话,如UserId,EmailId,RoleId等。

现在我正在为此目的创建会话变量并将所有这些值存储在会话变量中,是否有其他方法可以在整个会话中存储值,因为我已经读过使用会话变量是不安全的,并且viewdata,tempdata,viewbag临时存储数据

如何存储一个值,以便在整个会话期间在MVC中的任何地方使用

您可以创建一个自定义对象并将其存储在HttpContext中。

在全局。asax,钩子OnSessionStart事件

void OnSessionStart(...)
{
    HttpContext.Current.Session.Add("__CustomUserData", new UserDataObject());
}

从代码中任何HttpContext。当前属性!= null您可以检索该对象。在我的项目中创建了一个扩展

public static UserDataObject GetCustomUserDataObject(this HttpContext current)
{
    return current != null ? (UserDataObject)current.Session["__CustomUserData"] : null;
}

在您的控制器或管理器中,您可以通过以下方式访问它:

var userData = HttpContext.Current.GetCustomUserDataObject();

备注:

然而,默认userId和userName我建议使用Mvc标识系统(http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity)