내 세션에 AdministratorSession
콜렉션을 사용 중입니다. 그가 "Remember Me"를 클릭하면 세션 문서가 3600 분 후에 삭제되고, 그렇지 않으면 30 분 후에 삭제됩니다. 가능한가? 그렇지 않다면 내 선택권은 무엇입니까?동일한 컬렉션에있는 여러 문서의 TTL이 다릅니 까?
나는 여기서 간단한 접근법을 사용해 보았지만 색인을 생성하고 생성 된 첫 번째 문서에 TTL 값을 설정합니다. 예를 들어, 한 문서 ttl이 30으로 설정되고 3600 옆에 있으면 둘 다 30 분 후에 삭제됩니다.
다음은 현재이 기능을 수행하는 방법입니다. 이 작은 (if document.date < (now() - TTLduration)) delete(document);
) 때
public AdministratorSession Add(string ip, bool remember)
{
var random = new Random();
var session = new AdministratorSession
{
StartDateTime = DateTime.Now,
Hash = EncryptionService.Sha256(DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture)),
Salt = EncryptionService.Md5(ip + random.Next(0, 1000))
};
var db = DbContext.GetDatabase();
var collection = db.GetCollection<AdministratorSession>("AdministratorSession");
collection.EnsureIndex(IndexKeys.Ascending("StartDateTime"), IndexOptions.SetTimeToLive(TimeSpan.FromMinutes(remember ? 36000 : 30)));
collection.Insert(session);
return session;
}
좋은 생각, 지금 시험해 보겠습니다. – sed
좋은 해결 방법 – i3arnon