Как получить токен доступа из ServiceStack API - PullRequest
1 голос
/ 03 марта 2020

Я использую ядро ​​стека служб 4 с шаблоном идентификации, https://github.com/NetCoreTemplates/mvcidentity, и добавил следующее:

    new CredentialsAuthProvider(AppSettings),

к набору AuthFeature.

Также

var userRepo = new InMemoryAuthRepository();
container.Register<IUserAuthRepository>(userRepo);

Затем я пытаюсь выполнить следующий запрос POST: http://localhost: 53486 / auth / credentials с телом:

{
    "UserName": "admin@gmail.com",
    "Password": "p@55wOrd"
}

и получить Неверное имя пользователя или пароль .

Шаблон работает через веб-интерфейс, но я не могу заставить запрос API работать.

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 03 марта 2020

Когда вы используете mvcidentity , вы не , используя ServiceStack Authentication , вы решаете использовать ASP. NET Core Identity Auth вместо этого, поэтому вам нужно будет пройти аутентификацию с помощью ASP. NET Identity Auth API, например, Login () метода AccountController :

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
    {
        ViewData["ReturnUrl"] = returnUrl;
        if (ModelState.IsValid)
        {
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, set lockoutOnFailure: true
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
            if (result.Succeeded)
            {
                _logger.LogInformation("User logged in.");
                return RedirectToLocal(returnUrl);
            }
            if (result.RequiresTwoFactor)
            {
                return RedirectToAction(nameof(LoginWith2fa), new { returnUrl, model.RememberMe });
            }
            if (result.IsLockedOut)
            {
                _logger.LogWarning("User account locked out.");
                return RedirectToAction(nameof(Lockout));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return View(model);
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

Если вы хотите использовать ServiceStack Auth с MVC, вместо этого вы должны начать с mvcauth. NET Базовый шаблон , который является тем же приложением, но настроен для использования Вместо этого ServiceStack Auth .

...