Exemplo n.º 1
0
        public async Task ResultFilterAsync(AuthResultContext authContext, CancellationToken token = default)
        {
            if (UseTokenCookie && authContext.Result.Cookies.All(x => x.Name != Keywords.TokenCookie))
            {
                var accessToken = CreateJwtBearerToken(authContext.Request, authContext.Session);
                await authContext.Request.RemoveSessionAsync(authContext.Session.Id, token);

                authContext.Result.AddCookie(authContext.Request,
                                             new Cookie(Keywords.TokenCookie, accessToken, Cookies.RootPath)
                {
                    HttpOnly = true,
                    Secure   = authContext.Request.IsSecureConnection,
                    Expires  = DateTime.UtcNow.Add(ExpireTokensIn),
                });
            }
            if (UseTokenCookie && authContext.Result.Cookies.All(x => x.Name != Keywords.RefreshTokenCookie) &&
                EnableRefreshToken())
            {
                var refreshToken = CreateJwtRefreshToken(authContext.Request, authContext.Session.Id, ExpireRefreshTokensIn);
                authContext.Result.AddCookie(authContext.Request,
                                             new Cookie(Keywords.RefreshTokenCookie, refreshToken, Cookies.RootPath)
                {
                    HttpOnly = true,
                    Secure   = authContext.Request.IsSecureConnection,
                    Expires  = DateTime.UtcNow.Add(ExpireRefreshTokensIn),
                });
            }

            JwtUtils.NotifyJwtCookiesUsed(authContext.Result);
        }
Exemplo n.º 2
0
        public static IHttpResult SuccessAuthResult(this IHttpResult result, IServiceBase service, IAuthSession session)
        {
            var feature = HostContext.GetPlugin <AuthFeature>();

            if (result != null && feature != null)
            {
                var hasAuthResponseFilter = feature.AuthProviders.Any(x => x is IAuthResponseFilter);
                if (hasAuthResponseFilter)
                {
                    var ctx = new AuthResultContext {
                        Result  = result,
                        Service = service,
                        Session = session,
                        Request = service.Request,
                    };
                    foreach (var responseFilter in feature.AuthProviders.OfType <IAuthResponseFilter>())
                    {
                        responseFilter.ResultFilterAsync(ctx).Wait();
                    }
                }
            }
            return(result);
        }