示例#1
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            RecursoViewModel recurso = await _recursoGrpcService.AutenticarAsync(Login.Usuario, Login.Senha);

            if (recurso.Id == Guid.Empty)
            {
                ModelState.AddModelError(string.Empty, "Usuário ou senha inválidos.");
                return(Page());
            }

            IEnumerable <Claim> claims = new[]
            {
                new Claim(ClaimTypes.PrimarySid, recurso.Id.ToString()),
            };

            ClaimsPrincipal principal = ClaimsService.CreateClaimsPrincipal(claims);

            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                principal,
                new AuthenticationProperties
            {
                IsPersistent = true,
                ExpiresUtc   = DateTime.UtcNow.AddMinutes(_systemConfiguration.CookieExpires)
            });

            return(RedirectToLocal(returnUrl));
        }
    public async Task <IActionResult> OnPostAsync(string?returnUrl = null)
    {
        try
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            RecursoViewModel recurso = await _cpnucleoApiService.PostAsync <RecursoViewModel>("recurso", "auth", "", Auth);

            IEnumerable <Claim> claims = new[]
            {
                new Claim(ClaimTypes.PrimarySid, recurso.Id.ToString()),
                new Claim(ClaimTypes.Hash, recurso.Token)
            };

            ClaimsPrincipal principal = ClaimsService.CreateClaimsPrincipal(claims);

            int.TryParse(_configuration["Cookie:Expires"], out int expiresUtc);

            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                principal,
                new AuthenticationProperties
            {
                IsPersistent = true,
                ExpiresUtc   = DateTime.UtcNow.AddMinutes(expiresUtc)
            });

            return(RedirectToLocal(returnUrl));
        }
        catch (Exception ex)
        {
            ModelState.AddModelError(string.Empty, ex.Message);
            return(Page());
        }
    }