Ejemplo n.º 1
0
 public LoginAction(Authentication auth, IAnonClient anonClient)
 {
     this.auth       = auth;
     this.anonClient = anonClient;
 }
 private static void expireAnonSession(IAnonClient anonClient)
 {
     anonClient.Persist("", DateTimeOffset.MinValue, anonClient.RequesterKey);
 }
    public async Task InvokeAsync(HttpContext context, CurrentSession currentSession, TempLogSession sessionLog, IAnonClient anonClient, IClock clock, IHostEnvironment hostEnv)
    {
        anonClient.Load();
        if (isAnonSessionExpired(anonClient, clock))
        {
            expireAnonSession(anonClient);
        }
        if (context.User.Identity?.IsAuthenticated == true)
        {
            currentSession.SessionKey = new XtiClaims(context).SessionKey();
        }
        else
        {
            currentSession.SessionKey = anonClient.SessionKey;
        }
        var session = await sessionLog.StartSession();

        if (anonClient.SessionKey != session.SessionKey)
        {
            anonClient.Persist(session.SessionKey, clock.Now().AddHours(4), session.RequesterKey);
        }
        await sessionLog.StartRequest($"{context.Request.PathBase}{context.Request.Path}");

        try
        {
            await _next(context);
        }
        catch (Exception ex)
        {
            await handleError(context, sessionLog, hostEnv, ex);
        }
        finally
        {
            await sessionLog.EndRequest();
        }
    }
 private static bool isAnonSessionExpired(IAnonClient anonClient, IClock clock)
 {
     return(!string.IsNullOrWhiteSpace(anonClient.SessionKey) && clock.Now().ToUniversalTime() > anonClient.SessionExpirationTime.ToUniversalTime());
 }
Ejemplo n.º 5
0
 public WebAppEnvironmentContext(IHttpContextAccessor httpContextAccessor, IAnonClient anonClient, IUserContext userContext)
 {
     this.httpContextAccessor = httpContextAccessor;
     this.anonClient          = anonClient;
     this.userContext         = userContext;
 }