C# 如何存储一个值以在整个会话期间在MVC中的任何位置使用?

C# 如何存储一个值以在整个会话期间在MVC中的任何位置使用?,c#,asp.net-mvc,session-variables,C#,Asp.net Mvc,Session Variables,嘿,伙计们,这里需要帮助 在整个会话期间,我想在我的MVC项目中存储一些值,例如UserId、EmailId、RoleId和其他值 现在我正在为此创建会话变量,并将所有这些值存储在会话变量中,是否有其他方法在整个会话中存储值,因为我已经读到使用会话变量是不安全的,并且viewdata、tempdata、,viewbag临时存储数据您可以创建自定义对象并将其存储在HttpContext中 在global.asax中,钩住OnSessionStart事件 void OnSessionStart(..

嘿,伙计们,这里需要帮助

在整个会话期间,我想在我的MVC项目中存储一些值,例如UserId、EmailId、RoleId和其他值


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

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

在global.asax中,钩住OnSessionStart事件

void OnSessionStart(...)
{
    HttpContext.Current.Session.Add("__CustomUserData", new UserDataObject());
}
从HttpContext.Current属性所在代码中的任意位置null您可以检索该对象。在我的项目中创建了一个扩展

public static UserDataObject GetCustomUserDataObject(this HttpContext current)
{
    return current != null ? (UserDataObject)current.Session["__CustomUserData"] : null;
}
在控制器或管理器中,您可以通过以下方式访问它:

var userData = HttpContext.Current.GetCustomUserDataObject();
备注:


但是,对于默认的userId和userName,我建议使用Mvc标识系统()

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

在global.asax中,钩住OnSessionStart事件

void OnSessionStart(...)
{
    HttpContext.Current.Session.Add("__CustomUserData", new UserDataObject());
}
从HttpContext.Current属性所在代码中的任意位置null您可以检索该对象。在我的项目中创建了一个扩展

public static UserDataObject GetCustomUserDataObject(this HttpContext current)
{
    return current != null ? (UserDataObject)current.Session["__CustomUserData"] : null;
}
在控制器或管理器中,您可以通过以下方式访问它:

var userData = HttpContext.Current.GetCustomUserDataObject();
备注:


但是,对于默认的userId和userName,我建议使用Mvc标识系统()

为什么它不安全?它是否适用于您的应用程序/配置?我认为您的问题不符合
的要求,因此
要求提出“好”的问题。它太宽泛了,而且是基于观点的。你最好把问题集中在“怎么做”而不是“做什么”。但是回到你的问题上来-你需要阅读
ASP.NET
中的安全管理,确实有很多方法可以保存敏感数据,比如从数据库中读取,或者我认为现在最流行的方法-使用身份令牌。但是现在你问得有点太多了,所以我认为没有人能给你确切的答案。在会话中加密数据为什么不安全?它是否适用于您的应用程序/配置?我认为您的问题不符合
的要求,因此
要求提出“好”的问题。它太宽泛了,而且是基于观点的。你最好把问题集中在“怎么做”而不是“做什么”。但是回到你的问题上来-你需要阅读
ASP.NET
中的安全管理,确实有很多方法可以保存敏感数据,比如从数据库中读取,或者我认为现在最流行的方法-使用身份令牌。但是现在你又问得太多了,所以我认为没有人能给你确切的答案。在会话1中加密数据<代码>最初应该如何设置该值-以便能够从GetCustomUserDataObject获取该值?
2<代码>是否应将会话[u CustomUserData”]初始设置?
3。
如果是,它仍然使用会话权限?
因为我的要求是保留所选的
客户端和
设备,并在整个web应用程序中保留它们的值-因为在不同页面中处理的所有数据将与所选客户端和设备紧密相关1。
我们应该如何设置初始值-以便我们能够从GetCustomUserDataObject获取它?
2。
会话[\uu CustomUserData”]是否应初始设置3
如果是这样,它仍在使用会话对吗?
因为我的要求是保留所选的
客户端和
设备,并在整个web应用程序中保留它们的值-因为在不同页面中处理的所有数据将与所选的客户端和设备紧密相关