我在ASP.NET中的一个项目中工作。
我想在用户登录时首次缓存用户名。例如:如果当前用户首次登录并访问特定页面,将会显示一个弹出窗口,否则没有任何反应。
用户名应存储在客户端浏览器中,并在用户关闭浏览器之前保持有效。
我的问题是,这样做的最佳方法是什么?
如果我使用ASP.Net Cache存储用户名,有任何限制吗? 例如:
Cache["myCache"] = username;
并在第一次加载页面时从缓存中删除该项目。
if (!Page.IsPostBack)
{
Cache.Remove("myCache");
}
这对任何评论都是开放的。提前谢谢。
答案 0 :(得分:3)
使用HttpCookie
并根据需要设置到期时间:
如果您没有设置cookie的过期时间,则会创建cookie 它不存储在用户的硬盘上。相反,cookie是 作为用户会话信息的一部分进行维护。当用户 关闭浏览器,cookie被丢弃。
//write
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Font"] = "Arial";
myCookie["Color"] = "Blue";
//myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);
//read
if (Request.Cookies["UserSettings"] != null)
{
string userSettings;
if (Request.Cookies["UserSettings"]["Font"] != null)
{ userSettings = Request.Cookies["UserSettings"]["Font"]; }
}
答案 1 :(得分:2)
您是否考虑过使用Session?缓存在所有会话上共享,要求您在会话结束后删除该项目。会话不会遇到此问题,它会直接与每个用户的会话保持一致,并在会话结束时自动删除。注意:我假设您正在谈论显示名称,而不是用户的登录名称。这应该可以通过HttpContext.User.Identity.Name
获得。
至于显示弹出窗口,您可能希望使用cookie。在检查cookie的页面上运行一些javascript,如果不存在则显示弹出窗口,然后设置cookie(作为会话cookie),以便弹出窗口不再显示。如果您只希望弹出窗口在第一次登录时显示或仅定期登录等,则也可以使用cookie(不是会话cookie)。
答案 2 :(得分:1)
我不会为此使用缓存。相反,ASP.NET支持Membership和Roles。我会用它来管理你的会员资格,除非你想使用上面列出的cookie解决方案。关于弹出的页面,如果只有一页,您可以在用户的个人资料中使用cookie或设置。