【发布时间】:2019-09-21 19:08:26
【问题描述】:
所以我开始使用 create-react-app 并在我的机器上创建了一个 react-app。我能够在本地主机上运行它并查看网页。接下来,我运行npm run build 并让它构建./build 目录。
然后我创建了一个名为 server.js 的文件,其内容如下:
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const auth_key = require('./correct_auth.json').auth;
const app = express();
app.disable('x-powered-by');
app.use(express.static(path.join(__dirname, 'build')));
app.get(
'*',
(req, res) => {
const headers = req.headers;
if (headers[`auth-token`] && headers[`auth-token`] === auth_key) {
console.log(`auth-token: ${headers[`auth-token`]}`);
res.sendFile(path.join(__dirname, `build`, `index.html`));
} else {
res.sendStatus(404);
}
}
);
app.listen(
process.env.PORT || 5000,
() => {
console.log(`Frontend start on localhost:5000.`);
}
);
我的目标是仅在一个人拥有正确的 auth-token 标头时才提供网页。但是,在没有正确标题或什至没有指定标题的情况下访问该站点,仍会提供主页。
我应该注意到,我在 DigitalOcean 的 Ubuntu 服务器上运行它,并使用 Nginx 为 localhost:5000 提供服务。 IE,我可以访问 api.XXXXX.com 访问该站点,无论我有什么标题,我总是得到该站点的服务。
我的目录结构如下:
build
correct_auth.json
node_modules
package.json
public
server.js
src
【问题讨论】:
标签: node.js express authentication