我在表中为用户会话创建一个条目,该表被映射到guid以便跨域访问API。表中的行看起来像[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();
}
任何人都可以了解我在这里做错了吗?
答案 0 :(得分:0)
在此期间,我设法找到了一个笨重的选择:
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();
}