因此,我有一个后端电子邮件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
. 因此,我的目标是最终开发一个前端应用程序,将post请求发送到具有 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({});
});
不仅仅是逻辑,还有任何人可以帮忙的东西,例如,我想使用redis,但不确定它是否适合这种情况,除了它是一个内存数据存储,可以保存用户注册的电子邮件,并检查 username
是可用的。
1条答案
按热度按时间qvtsj1bj1#
特快专场https://www.npmjs.com/package/express-session 这个包裹可能对你有用。
然后,在您的注册路径中,您只需要将用户数据存储在您想要的任何位置,并存储已登录的用户,以便您的应用程序知道。
在登录路径中,您只需检查用户是否存在,然后再次存储已登录的用户。
在注销路径中,您只需删除会话的用户
要检查用户是否已登录,可以使用快速路由器
你把路由器应用到任何需要登录用户的路由上