Tôi cố gắng triển khai trình trợ giúp cookie cơ bản trong ứng dụng của mình. Chủ yếu là tôi kiểm tra trong bộ điều khiển cơ sở mọi lúc có hay không nếu cookie được thiết lập. Nếu cookieASP.NET MVC Cookie Implementation
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;
}
}
nếu phiên là null tôi cố gắng để có được từ cookie hoặc nếu phiên khởi tôi thiết lập cookie nhưng tôi không bao giờ thấy cookie của tôi trong trình duyệt. Chuyện gì thế?
Tôi luôn luôn bắt đầu phiên nhưng với userId = 0 Để có được cookie và thiết lập phiên từ cookie:
if (userId == 0)
{
MyCookie myCookie = new MyCookie(_app);
User user = cookieHelper.GetCookie();
if (user != null)
SessionHelper.SetSession(user);
}
Mã của bạn này có vẻ tốt để tôi. Bạn có thể đăng mã nơi bạn đang gọi nó không? –
Đoạn mã mới ('if (userId == 0)') nằm ở đâu? Bạn đã đặt mã đó ở đâu? Điều gì phương pháp điều khiển, vv? Ngoài ra, tại sao bạn sử dụng 'CookieHelper' bên dưới và' MyCookie' ở trên? Và tại sao một phương thức 'GetCookie' trả về' HttpCookie' khi bạn gọi phương thức 'GetCookie' khác, nó trả về' User'. Tôi khá bối rối. –
Tôi luôn khởi động phiên trong bộ điều khiển cơ sở. Nếu không có người dùng đăng nhập tôi đặt phiên với id người dùng 0. Actuallu cả hai đều là MyCookie. Nhưng vì tôi chỉnh sửa câu hỏi trong khi mã của tôi bị thay đổi. Bởi vì tôi thử một cái gì đó trong khi chờ đợi một câu trả lời từ stackoverflow. – gandil