OpenId Авторизация или ответ токена не могут быть возвращены с этой конечной точки - PullRequest
0 голосов
/ 29 августа 2018

Я использую OpenIddict Rc3. Я проследил за кодом в потоке паролей с небольшими изменениями и попытался запустить его. Но метод SignIn возвращает 500. Я попытался найти много, но не нашел решения.

Вот мой код:

StartUp.cs

services.AddOpenIddict().AddCore(options =>
            {
                options.UseEntityFrameworkCore().UseDbContext<ApplicationDbContext>();
            }).AddServer(options =>
            {
                options.UseMvc();
                options.EnableTokenEndpoint("/connect/token");
                //options.EnableAuthorizationEndpoint("/connect/token");
                // Enable the password flow.
                options.AllowPasswordFlow();

                // During development, you can disable the HTTPS requirement.
                options.DisableHttpsRequirement();

            }).AddValidation();

AuthorizationController.cs

[HttpPost("~/connect/token")]
        [Produces("application/json")]
        public async Task<IActionResult> Exchange(LoginViewModel loginVM)
        {
            if (loginVM.IsPasswordGrantType())
            {
                var user = await _accountManager.GetUserByPhoneAsync(loginVM.MobileNumber);
                if (user == null)
                {
                    return BadRequest(ResponeModel.Create("","",StatusCodes.UserNotFound,Messages.UserNotFound));
                }

                // Ensure the user is enabled.
                if (user.IsDeleted || !user.IsEnabled)
                {
                    return BadRequest(ResponeModel.Create("","",StatusCodes.UserAccountDisabled,Messages.UserAccountDisabled));
                }
                // Validate the username/password parameters and ensure the account is not locked out.
                var result = await _signInManager.CheckPasswordSignInAsync(user, loginVM.Pin,true);

                // Ensure the user is not already locked out.
                if (result.IsLockedOut)
                {
                    return BadRequest(ResponeModel.Create("","",StatusCodes.UserAccountSuspended,Messages.UserAccountSuspended));
                }
                if (!result.Succeeded)
                {
                    return BadRequest(ResponeModel.Create("","",StatusCodes.InvalidLoginCredentials,Messages.InvalidLoginCrendentials));
                }

                // Create a new authentication ticket.
                var ticket = await CreateTicketAsync(loginVM, user);
                return SignIn(ticket.Principal, ticket.Properties, ticket.AuthenticationScheme);
            }
            return BadRequest(ResponeModel.Create("","",StatusCodes.UnsupportedOpenIdGrantType,Messages.ErrorOccured, Messages.UnsupportedOpenidGrantType));
        }

Подробнее:

Я использую Почтальон для проверки конечных точек.

...