Как (если возможно) внедрить Bcrypt и JWT на веб-сайт, используя следующий код? - PullRequest
0 голосов
/ 03 мая 2019

Я сейчас делаю курс в Node.js и заканчиваю API аутентификацией с использованием JWT и Bcrypt. Код можно найти по ссылке ниже. Код довольно прост, и я все понимаю, но мой вопрос: как это будет работать для веб-приложения, а не для использования почтальона? Можно ли даже отправить эти токены-носители аутентификации в req.headers с использованием HTML-форм, кнопок или другим способом из внешнего интерфейса? Нет ли способа добиться этого без использования паспорта? Пожалуйста, кто-нибудь может дать краткий ответ, чтобы дать мне представление о том, как это сделать, если это возможно, потому что я часами пытаюсь найти, можно ли каким-то образом использовать этот метод аутентификации для веб-приложений.

https://github.com/andrewjmead/node-course-v3-code/tree/master/task-manager/src

Ответы [ 2 ]

1 голос
/ 03 мая 2019

как это будет работать для веб-приложения и без использования почтальона?

  1. Сначала вам нужно создать HTML-форму / угловое приложение с входными данными для входа, такими как имя пользователя и пароль
  2. Затем выполните ajax-вызов (если это приложение html) или сервисный вызов (если угловой) / users / login с публикацией введенных пользователем значений, и вы получите токен при успешной аутентификации.
  3. Затем сохраните токен в локальном хранилище / файле cookie, а затем отобразите страницу панели управления.
  4. Когда пользователь переходит на другие страницы, если это угловое приложение, с помощью перехватчика передают маркер Bearer при каждом запросе. Приложение проверит и предоставит ответ JSON.

Можно ли даже отправить эти токены-носители аутентификации в req.headers с использованием HTML-форм, кнопок или другим способом из внешнего интерфейса?

Нет ли способа добиться этого без использования паспорта?

  • Да
  • Примечание. Преимущества использования Passport: Passport является промежуточным программным обеспечением для проверки подлинности Node.JS, он не предназначен для какого-либо конкретного метода проверки подлинности, метод проверки подлинности, такой как OAuth, JWT, реализован в шаблоне Passport by Strategy, поэтому он означает, что вы может поменять механизм аутентификации, не затрагивая другие части вашего приложения. В паспорте используются стратегии, например, локальная стратегия или с появлением социальных сетей, единый вход с использованием поставщика OAuth, такого как facebook или twitter

Ссылка: полный пример здесь https://www.toptal.com/angular/angular-6-jwt-authentication

1 голос
/ 03 мая 2019

Я посмотрел ваш код, используя предоставленную вами ссылкуКраткий ответ: YES, вы можете отправить токен носителя внутри req.headers.authorization из внешнего интерфейса.

Способ его отправки зависит от реализации внешнего интерфейса.

  1. Если вы используете fetch API, вы можете отправить токен на предъявителя, используя опции запроса fetch API
fetch ('yoururl', {
    method: 'POST',  //your request verb
    body: JSON.stringify('yourObjectData'), //if making a post request
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Bearer ${yourtoken}` //your token can then be accessed using req.headers.authorization 
    },
})

Подробнее о том, как использовать fetch api, см. Здесь https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Если вы используете jquery, этот ответ также должен работать Как установить заголовки авторизации в HTML-форме или в A href

Я почти уверен, что есть другие способы отправкитокен от переднего конца.Я использовал API выборки.

...