Бэкэнд Sails для Angular2 + Auth
Этот пост предназначен для демонстрации защиты поста одностраничного приложения angular 2+ здесь
Мы собираемся использовать паруса для создания нашего быстрого API, прежде чем мы начнем, убедитесь, что у вас установлен узел.
Наш api будет использовать mysql или mongo db для любой из установленных вами баз данных, вы можете перейти на их соответствующие сайты, чтобы узнать, как их установить.
Теперь приступим к настройке серверной части API-интерфейса sails node. Откройте свой терминал и введите следующее
npm install sails -g
Yeahhhh sails установлен на нашем локальном компьютере, мы переходим к созданию нашего приложения sails, набрав команду ниже
sails new server-api — no-frontend
наша папка должна быть приготовлена из компонентов паруса. После приготовления наша папка server-api должна быть готова, просто сделайте
sails lift
что должно дать нам что-то вроде этого
так что наш api работает Ура !!!. Теперь нам нужно установить зависимости, мы собираемся создать наш api
npm install bcryptjs — save
Эта команда предназначена для хеширования пароля. Следующее - для аутентификации на основе веб-токенов json.
npm install jsonwebtoken — save
Последний предназначен для обработки ошибок валидации.
npm install sails-hook-validation — save
Создание моделей, которые похожи на нашу таблицу базы данных из представления mysql или коллекций в mongodb, поскольку мы имеем дело с созданием бэкэнда аутентификации, мы не будем особо углубляться в паруса, теперь мы создаем нашу модель user, что легко сделать используя следующую команду
sails generate api user
это должно помочь нам создать модель user и userController в api / models и api / controllers соответственно. Мы переходим к нашему файлу модели user.js, чтобы создать поля, которые пользователь будет хранить. Итак, это должно наконец выглядеть так
Теперь, когда наш пользовательский режим завершен, мы можем выполнять общие действия с планом, такие как публикация, получение, удаление и размещение, из нашего интерфейса. Обратите внимание, что вы можете использовать политики для блокировки, которые должны быть общедоступными или требуют специальной аутентификации. Теперь просто сделаем его открытым.
Теперь давайте создадим наши методы API для
- Вход: для входа в систему используются адрес электронной почты и пароль, отправленные через тело запроса.
- Токен: помогает обновить наш токен из исходного токена, отправленного из заголовка запроса, и вернуть новый токен.
Давайте перейдем к userController.js в папке api / controllers и создадим приведенную выше логику, теперь она должна выглядеть так
Прежде чем мы начнем использовать наш сервис, давайте создадим нашу политику для обработки проверки подлинности для нашего токена. В папке api / policy создайте файл с именем isAuth.js.
NB: вы можете создать файл services / config.js для хранения секретного ключа для нашей библиотеки jsonwebtoken.
Давайте воспользуемся этой политикой сейчас в нашем пользовательском контроллере для редактирования, удаления и обновления схемы. Откройте config/policies.js
и сделайте так, как показано ниже
наконец, нам нужно создать наш api-маршрут для входа и токена на нашем config/routes.js
вот так
Да, мы закончили, давайте откроем почтальон для тестирования нашего API. О, нам нужно определить, какую базу данных использовать с нашим api (mysql или mongodb). Если у вас есть mysql в вашей системе, вы можете сделать это ниже
npm install sails-mysql — save
Для mongo db мы устанавливаем этот адаптер
npm install sails-mongo — save
Откройте свой config / connection.js и сделайте это.
Для mysql:
authApiMysql: { adapter: 'sails-mysql', host: 'localhost', user: 'root', //optional password: 'root', //optional database: 'testAuthDB' },
Для монго:
authApiMongo: { adapter: 'sails-mongo', host: 'localhost', port: 27017, database: 'testAuthDB' },
Теперь в зависимости от вашей базы данных откройте config / models.js. Для MySQL
connection: ‘authApiMysql’
Для монго
connection: ‘authApiMongo’
затем migrate: ‘alter’
Теперь sails lift
снова вы увидите, что ваша база данных была создана с моделями, созданными в виде таблиц или коллекций.
Если у вас есть эта ошибка ниже
error: Error (E_UNKNOWN) :: Encountered an unexpected error : Could not connect to MySQL: Error: ER_BAD_DB_ERROR: Unknown database ‘testauthdb’
Затем перейдите в консоль своей базы данных, чтобы создать ‘testauthdb’ для пользователей mysql.
Почтальон, мы здесь, откройте его и отправьте почтовый запрос на http: // localhost: 1337 / user, передав адрес электронной почты, имя, пароль и т. Д.
теперь мы создали нашего пользователя, теперь нужно попробовать войти в систему с созданными параметрами
Давайте проверим API нашего токена, если он создает или обновляет API для нас, поскольку он истекает каждые 10 минут, прежде чем через 10 минут мы обновим старый токен, используя такой заголовок
Итак, мы готовы вернуться к нашему сообщению об одностраничной аутентификации Angular2 +, но прежде чем мы продолжим, последнее, что нужно сделать, это проверить этот файл config / cors.js при возникновении проблем с подключением cors к нашему бэкэнду из нашего интерфейса. сервер, обновляющий файл, должен помочь
Перезапустите паруса и все готово.
Проверьте выпуски (теги) для различных добавленных функций.