Я пытаюсь реализовать базовый помощник 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;
}
}
если сеанс нулевой, я пытаюсь получить из файла cookie или, если сеанс инициализируется, я устанавливаю файл cookie, но я никогда не вижу свой файл cookie в браузере. Что не так?
Я всегда запускаю сеанс, но с userId = 0. Чтобы получить файл cookie и установить сеанс из файла 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
. Я совсем запутался. - person Kirk Woll   schedule 23.07.2011