Большое вступление
Аутентификация и авторизация — одна из основных частей любой серверной системы, от малого бизнеса до крупной компании.
Из этой подробной серии вы узнаете, как работать с обоими в приложении Node.js.
Стек
Как уже упоминалось в заголовке, мы будем использовать Node.js, но что такое Node.js?
Node.js — это: кроссплатформенная внутренняя среда выполнения JavaScript с открытым исходным кодом, работающая на движке V8 и выполняющая код JavaScript вне веб-браузера.
Итак, Node.js — это среда, которая помогает вам запускать JavaScript на стороне сервера, в узле есть десятки библиотек, которые помогут вам построить безопасные и быстрые внутренние серверы.
В этой серии мы будем использовать:
- Express.js: быстрый, бескомпромиссный, минималистичный веб-фреймворк. которые помогут вам создавать веб-приложения и API.
- Passport.js: Passport — промежуточное ПО аутентификации для Node.js. который имеет несколько стратегий аутентификации, таких как Google, Facebook и Twitter.
- PostgreSQL: бесплатная система управления реляционными базами данных с открытым исходным кодом, в которой особое внимание уделяется расширяемости и совместимости с SQL.
- Призма: ORM для PostgreSQL. вы можете узнать больше об ORM здесь.
Перед погружением
Итак, прежде чем мы углубимся в написание нашего кода и некоторой логики, давайте узнаем разницу между аутентификацией и авторизацией.
Аутентификация: это процесс идентификации чьей-либо личности путем подтверждения того, что человек соответствует тому, на что он претендует.
Авторизация: это процесс предоставления кому-либо каких-либо действий. Это означает, что это способ проверить, есть ли у пользователя разрешение на использование ресурса или нет.
Чтобы узнать больше, проверьте этот блог.
Установка
Теперь пришло время приступить к настройке нашего проекта.
Примечание. Убедитесь, что на вашем компьютере установлены Node.js, PostgreSQL,и Prisma studio.
Прежде всего, создайте папку с именем prisma-auth
.
Откройте папку в вашем cmd/терминале и введите команду:
npm init -y
с помощью флага -y
, чтобы использовать значения по умолчанию для вопросов.
Теперь файл package.json
будет создан в корне вашего проекта.
Время настроить нашу среду разработки:
npm i -D nodemon cross-env prettier
- nodemon: перезапустить наш сервер, когда файл был изменен, создан.
- красивее: форматировщик кода.
- cross-env: запуск сценариев, которые устанавливают и используют переменные среды на разных платформах.
В проекте root создайте файл с именем .prettierrc.json
:
{ "semi": true, "tabWidth": 2 "useTabs": false, "singleQuote": false, "traillingComma": "none }
Теперь давайте установим наши зависимости:
npm i express express-session cookie-parser jsonwebtoken prisma @prisma/client bcryptjs cors dotenv passport passport-local passport-jwt
создайте папку src
, внутри папки src
создайте новый файл с именем app.js
const express = require("express"); const cookies = require("cookie-parser"); const session = require("express-session"); const passport = require("passport"); const cors = require("cors") require("dotenv").config(); // Initialize a express application const app = express(); app.use(express.json()); app.use(cors()); // initialize session app.use(session({ name: process.env.SESSION_NAME, secret: process.env.SESSION_SECRET, saveUninitialized: false, resave: false, cookie: {maxAge: process.env.COOKIE_EXPIRE * 24 * 24 * 60 * 1000} })); app.use(cookies()); // Initialize passport require("./passport/local")(passport); app.use(passport.initialize()); app.use(passport.session()); // Start the app const PORT = process.env.PORT; app.listen(PORT, console.log("server have been lift off 🚀"));
В корне вашего проекта создайте новый файл .env
с содержимым:
Давайте проверим нашу работу! в файле package.json
и внутри scripts
добавьте следующее:
Итак, в вашем cmd/терминале введите: npm run dev
.
Итак, для этой части достаточно.
Во второй части — 02 мы начнем создавать наши модели, логику входа/регистрации с использованием стратегии passport-local
и некоторые вспомогательные функции.