Итак, у меня есть идея для внутреннего сервера API электронной почты с аутентификацией. Прямо сейчас я сосредотачиваюсь только на его части аутентификации, и это то, в чем мне нужна помощь с конкретизацией:
const express = require('express');
const bodyParser = require('body-parser');
const expressSession = require("express-session");
const app = express();
app.use(bodyParser.json());
app.use(expressSession(session));
const handleAuth = (req, res, next) => {
if (!req.session.user_id) {
res.status(200).send({ "authenticated": false, "username": null });
} else {
res.status(200).send({ "authenticated": true, "username": req.session.user_id });
}
}
Тело этого первого маршрутизатора ниже будет иметь username: String
, password: String
и passwordConfirmation: String
. Итак, моя цель здесь - в конечном итоге разработать интерфейсное приложение, которое будет отправлять почтовый запрос по этому пути с телом, содержащим username
, password
и passwordConfirmation
, которое будет регистрировать пользователя для новой учетной записи.
app.post('/auth/signup', (req, res) => {
// Signs up for a new account with the
// provided username
res.status(422).send({ username: "Username already in use" });
res.status(422).send({ username: "Username already in use",
password: "Must be between 4 and 20 characters",
passwordConfirmation: "Passwords must match" });
});
Тело второго маршрутизатора ниже будет иметь username: String
и password: String
.
app.post('/auth/signin', (req, res) => {
// Signs in with the provided username
});
Тело этого третьего маршрутизатора ниже будет иметь username: String
.
app.post('/auth/username', (req, res) => {
// Checks to see if a username is
// already in use
});
Четвертый маршрутизатор не будет иметь тела.
app.get('/auth/signedin', handleAuth, (req, res) => {
// Checks to see if the user is currently
// signed in
});
Пятый маршрутизатор будет иметь пустой объект {}
.
app.post('/auth/signout', (req, res) => {
// Signs the user out
res.status(200).send({});
});
Не только logi c, но независимо от того, с чем кто-либо может помочь, например, я хочу использовать Redis, но не уверен, как он вписывается в это, за исключением того, что это хранилище данных в памяти, которое также может сохранять электронные письма, с которыми пользователи подписываются. для проверки наличия username
.