我試圖實現我的應用程序的基本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