asp.net MVC 4 - MVC4:删除会话结束时的自定义行



>我正在为用户会话在表中创建一个条目,该条目映射到用于跨域访问 API 的 guid。表中的行类似于 [guid, cookie],并在登录时填充。

session.guid = Guid.NewGuid();
session.cookie = FormsAuthentication.GetAuthCookie(sUser.email, false).Value;

我遇到的问题是在会话结束时将其从数据库中删除。到目前为止,我有这个似乎不起作用。

在 Session_End() 中:

var cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
string cValue = cookie.Value;
using (var db = new xEntities())
{
     Session session = db.Sessions.Where(p => p.cookie == cValue).FirstOrDefault();
     db.Sessions.Remove(session);
     db.SaveChanges();
}

谁能阐明我在这里做错了什么?

在此期间,我设法找到了一个笨拙的替代方案:

DateTime now = DateTime.Now;
Session session = new Session();
session.guid = Guid.NewGuid();
session.cookie = FormsAuthentication.GetAuthCookie(sUser.email, false).Value;
session.started = now;
using (var db = new xEntities())
{
   db.Sessions.Add(session);
   db.SaveChanges();
}
using (var db = new xEntities())
{
   List<Session> sessions = db.Sessions.ToList();
   now = now.AddMinutes(-60);
   foreach(Session s in sessions)
   {
      if (s.started < now)
      {
         db.Sessions.Remove(s);
      }
   }
   db.SaveChanges();
}

相关内容

  • 没有找到相关文章

最新更新