Asp.net mvc 使用mvc中的属性分配会话值
所以,这是我的想法。我有一个SessionCache类,用于获取和设置会话变量,这是简单的用户信息。因此,我希望在用户成功登录后设置会话值,并使用该类在整个应用程序中获取会话值。但不知怎的,我无法在SessionCache类中将值设置为会话变量Asp.net mvc 使用mvc中的属性分配会话值,asp.net-mvc,session,Asp.net Mvc,Session,所以,这是我的想法。我有一个SessionCache类,用于获取和设置会话变量,这是简单的用户信息。因此,我希望在用户成功登录后设置会话值,并使用该类在整个应用程序中获取会话值。但不知怎的,我无法在SessionCache类中将值设置为会话变量 public class SessionCache { public static string SessionID { get { return HttpContext.Curre
public class SessionCache
{
public static string SessionID
{
get
{
return HttpContext.Current.Session.SessionID;
}
}
public static CurrentUserVM CurrentUser
{
get
{
return (CurrentUserVM)HttpContext.Current.Session["CurrentUser"];
}
set
{
HttpContext.Current.Session["CurrentUser"] = CurrentUser;
}
}
}
因此,我尝试在登录操作中使用上述类设置值,如下所示:
CurrentUserVM currentUser = new CurrentUserVM();
currentUser.User = db.userClass.FirstOrDefault(m => m.EmailID.Equals(objLogin.EmailID));
currentUser.isAuthenticated = true;
SessionCache.CurrentUser = currentUser;
SessionCache.CurrentUser.isAuthenticated = currentUser.isAuthenticated;
但是SessionCache.CurrentUser仍然为空。我的代码有问题吗?我认为问题很明显。只要简单地改变这个
HttpContext.Current.Session["CurrentUser"] = CurrentUser;
进入这个
HttpContext.Current.Session["CurrentUser"] = value;
尝试HttpContext.Current.Session[CurrentUser]=value;不过,这是一个非常糟糕的主意,至少对于您存储的数据来说是这样。诸如用户是否经过身份验证之类的内容不应存储在会话中。可以通过User.Identity.IsAuthenticated随时检索,所以没有理由这样做。用户的电子邮件地址等信息应始终来自数据库。检索用户记录的成本非常低,特别是因为实体框架使用了自己的查询缓存,然后,你不必负责在会议中始终更新内容。我完全同意你在那里说的任何话。但这并不涉及大量数据,只是在登录后将用户重定向到网站的不同部分。我在这里使用的用户数据不多。此应用程序太简单,无法使用Identity。但谢谢无论如何。@chrispratt我到底在想什么..嘘,谢谢you@Mash,不客气,如果这个答案能解决你的问题,别忘了把它标记为答案。谢谢: