Веб-приложение на уровне данных REST api

#asp.net #asp.net-mvc #rest #asp.net-web-api #asp.net-identity

#asp.net #asp.net-mvc #rest #asp.net-web-api #asp.net-идентификация

Вопрос:

Мне нужно иметь RESTful API, который я мог бы вызывать из веб-приложения MVC5, чтобы изначально выполнять простую аутентификацию / авторизацию исключительно на локальном сервере sql. Мне нужно иметь возможность передавать учетные данные для входа из веб-приложения в api, чтобы получить токен заголовка и т.д. Затем мне нужно иметь возможность проверять токен на наличие любых запросов на извлечение данных или сохранение данных обратно в БД. Я использую обучающий пример приложения здесь прямо сейчас, пока не разберусь в функциональности.

веб-сторона — это просто форма с кнопкой и некоторым jquery для отслеживания нажатия кнопки отправки:

 $(document).ready(function () {

    var register = function() {
        var dataa = {
            Email: "password@host.com",
            Password: "password",
            ConfirmPassword: "password"
        };

        $.ajax({
            type: 'POST',
            url: 'api/Account/Register',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(dataa)
        });
        return false;
    }

    $('#btnRegister').click(register);
});
  

и затем, вот контроллер самого api:

 [Authorize]
[RoutePrefix("api/Account")]
public class AccountController : ApiController
{
    [AllowAnonymous]
    [Route("Register")]
    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };

        IdentityResult result = await UserManager.CreateAsync(user, model.Password);

        if (!result.Succeeded)
        {
            return GetErrorResult(result);
        }

        return Ok();
    }
}
  

И теперь, когда я пытаюсь щелкнуть по нему, оно выдает ошибку 404.

Комментарии:

1. Создание веб-приложения с помощью Visuat Studio путем включения Web API, MVC и аутентификации (индивидуальных учетных записей пользователей) дает вам проект, в котором есть практически все, и это неплохая отправная точка. И в Интернете есть много руководств по Web API и безопасности Web API. Кроме того, ваш вопрос слишком широк для ответа, вам нужно сосредоточиться на том, что у вас не работает.

2. Итак, проблема, с которой я сталкиваюсь, заключается в том, что я создаю новый веб-API с отдельными учетными записями пользователей, и у него все настроено, но я изо всех сил пытаюсь понять, как создать простую страницу входа, которая передает имя пользователя / пароль этому api. Руководства, которые я нашел, похоже, помогают либо с веб-приложением, либо с аутентификацией api, но не обязательно с соединением между ними. Мне просто нужно лучше понять концепции, вот почему я оставил это расплывчатым, я не знаю, какие вопросы задавать.

3. Stack Overflow на самом деле не предназначен для предоставления руководств (или ссылок на учебные пособия). На самом деле это больше о помощи с кодом. Если вы продвинулись достаточно далеко, чтобы у вас был общий доступ к коду, это, вероятно, лучший путь.

4. Обновлено, чтобы добавить код для более конкретного вопроса на основе примера, предложенного @infiniteRefactor

Ответ №1:

Аутентификация в WebAPI основана на аутентификации OAuth на основе токена.

Существует URL-адрес аутентификации (/Token для созданного по умолчанию проекта), и когда вы делаете POST-запрос на этот URL с именем пользователя и паролем, вы получаете токен в ответ. Ваше клиентское приложение должно хранить этот токен и прикреплять его к каждому запросу, чтобы получить авторизацию.

По сути, этот процесс генерации токенов и их распознавания обеспечивается компонентами OWin, которые подключены к вашему конвейеру приложений. Вы можете изучить StartUp.Auth.cs порядок инициализации этих компонентов.

В вашей форме входа нет ничего особенного. Оно просто отправит имя пользователя и пароль в URL аутентификации.

Способ хранения токена на стороне клиента может варьироваться в зависимости от вашего дизайна. Наиболее предпочтительными способами хранения токена являются использование cookie или специального хранилища токенов в Javascript.

Вы можете ознакомиться с этим руководством для примера и обсуждения основ.

Комментарии:

1. Итак, у меня загружен образец приложения для этого руководства, но все это в одном проекте, и для моих целей мне нужны отдельные API и веб-приложение. Итак, я добавляю новый проект в решение и копирую поверх домашнего контроллера и индексного представления, но он использует

2. <привязка данных формы=»отправить: регистрация»> <привязка данных формы= «отправить: вход»> итак, как мне изменить это, чтобы получить доступ к api?