我试图实现我的应用程序的基本cookie的帮手。 主要是每次检查基本控制器是否设置cookie。 如果饼干ASP.NET MVC 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;
}
}
如果会话是空我试图从cookie来获得,或者如果会话初始化我设置Cookie,但我从来没有看到我的浏览器cookie。哪里不对?
我总是开始会话,但用户id = 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'。我很困惑。 –
我总是初始化基本控制器中的会话。如果没有用户登录,我使用用户ID 0设置会话。Actuallu两个都是MyCookie。但是因为我在编辑问题的同时我的代码已更改。因为我在等待来自stackoverflow的答案时尝试了一些东西。 – gandil