Соединение различных проектов MVC и WebAPI (/ MVC) с Identity - PullRequest
0 голосов
/ 20 апреля 2020

Prelude: я работаю над проектом, который имеет административную часть, API и пользовательскую часть; довольно классный c. Я решил объединить API и Admin в одном проекте, моя идея также заключалась в использовании методов Admin для API (DRY & WORE). У меня все еще есть сомнения относительно этого решения. Кстати, я не хочу, чтобы веб-сайт общался с БД напрямую, каждое задание БД будет обрабатываться через API.

enter image description here

Проблема: Я хочу использовать идентичность на весь проект. Когда я добавил Identity в мое приложение MVC (веб-сайт) и приложение API (также имеет MVC, Admin-API), группа контроллеров и представлений была добавлена ​​в оба проекта. Но они полностью отличаются друг от друга, не должны ли они иметь хотя бы одинаковые модели в обоих проектах? Если мне приходилось вручную добавлять необходимые части из одного проекта в другой, почему Identity не позволяла мне выбирать, какую часть добавлять в процессе установки, поскольку эту возможность довольно легко предоставить.

Например, на MVC сторона У меня есть это действие входа в систему

// POST: /Account/Login
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
            switch (result)
            {
                case SignInStatus.Success:
                    return RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                    return View("Lockout");
                case SignInStatus.RequiresVerification:
                    return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return View(model);
            }
        }

, которое довольно ясно в модели, что я предоставлю имя пользователя и пароль. С другой стороны, на стороне API нет действия " Login ". Некоторые ExternalLogin или AddExternalLogin действия, для которых не требуется пароль. Допустим, я использовал получение токенов для проверки успешности входа в систему, а как насчет других операций Identity для установки сеансов или файлов cookie на стороне MVC? Что касается ответа API, какая часть Identity отвечает за установку необходимой информации, например, вошел ли пользователь в систему или имя пользователя?

tl & dr

Вопрос: Должен ли я установить Identity для обоих моих API и MVC приложение? Если да, то как войти в систему с помощью Identity over WebAPI?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...