我试图在我的应用程序中实现一个基本的Cookie帮助程序。 主要是在每次基础控制器中检查cookie是否被设置。 如果cookie
public class MyCookie
{
public static string CookieName {get;set;}
public virtual User User { get; set; }
public virtual Application App { get; set; }
public MyCookie(Application app)
{
CookieName = "MyCookie" + app;
App = app;
}
public void SetCookie(User user)
{
HttpCookie myCookie = HttpContext.Current.Request.Cookies[CookieName] ?? new HttpCookie(CookieName);
myCookie.Values["UserId"] = user.UserId.ToString();
myCookie.Values["LastVisit"] = DateTime.Now.ToString();
myCookie.Expires = DateTime.Now.AddDays(365);
HttpContext.Current.Response.Cookies.Add(myCookie);
}
public HttpCookie GetCookie()
{
HttpCookie myCookie = HttpContext.Current.Request.Cookies[CookieName];
if(myCookie != null)
{
int userId = Convert.ToInt32(myCookie.Values["UserId"]);
User user = session.Get<User>(userId);
return user;
}
return null;
}
}
如果会话为null,我会尝试从cookie中获取,或者如果会话初始化,则设置cookie,但我从未在浏览器中看到我的cookie。有什么问题吗?
我始终启动会话,但userId = 0。 要从cookie获取并设置会话:
if (userId == 0)
{
MyCookie myCookie = new MyCookie(_app);
User user = cookieHelper.GetCookie();
if (user != null)
SessionHelper.SetSession(user);
}
if (userId == 0)
)在哪里?你把那段代码放在哪个控制器方法里了?另外,为什么下面要用CookieHelper
,而上面却用了MyCookie
?还有一个GetCookie
方法返回一个HttpCookie
,但是调用另一个GetCookie
方法却返回一个User
,这让我感到很困惑。 - Kirk Woll