Example #1
0
 internal Session(
     RawSession session,
     ISessionIdGenerator sessionIdGenerator)
 {
     _session            = session;
     _sessionIdGenerator = sessionIdGenerator;
 }
        public DateTime GetExpiration(RawSession session)
        {
            var idleExpiration     = _dateTimeFactory.Now() + _timeoutSettings.IdleTimeout;
            var absoluteExpiration = session.SessionData.CreationDate + _timeoutSettings.AbsoluteTimeout;

            return(MinOf(absoluteExpiration, idleExpiration));
        }
Example #3
0
 public void WriteCookie(IRequest request, IResponse response, RawSession session, DateTime expirationDate)
 {
     session.State.Match(
         @new: _ => WriteNew(request, response, session, expirationDate),
         existing: _ => WriteExisting(response, session, expirationDate),
         existingWithNewId: _ => WriteExisting(response, session, expirationDate),
         abandoned: _ => WriteAbandoned(request, response));
 }
Example #4
0
 private void SetCookie(IResponse response, RawSession session, DateTime expirationDate)
 {
     response.SetCookie(
         new Cookie(
             _cookieSettings,
             session.GetId().ToString(),
             expirationDate));
     _cacheControlHeaderWriter.AddCacheControlHeaders(response);
 }
Example #5
0
 private void WriteExisting(IResponse response, RawSession session, DateTime expirationDate)
 {
     if (session.IsEmpty())
     {
         UnsetCookie(response);
     }
     else
     {
         SetCookie(response, session, expirationDate);
     }
 }
Example #6
0
        private void WriteNew(IRequest request, IResponse response, RawSession session, DateTime expirationDate)
        {
            var isSessionEmpty = session.IsEmpty();

            if (!isSessionEmpty)
            {
                SetCookie(response, session, expirationDate);
            }
            else if (RequestHasSessionIdCookie(request))
            {
                UnsetCookie(response);
            }
        }
Example #7
0
 public static SessionId GetId(this RawSession session)
 => session.State.Match(