回答編集履歴
1
おまけ追加
answer
CHANGED
@@ -40,4 +40,61 @@
|
|
40
40
|
// クッキーのセッションあたりの確認になるか?
|
41
41
|
res.sendFile(`${__dirname}/admin/admin.js`);
|
42
42
|
});
|
43
|
-
```
|
43
|
+
```
|
44
|
+
|
45
|
+
---
|
46
|
+
|
47
|
+
【おまけ】なんとか同じサーバで上手く共用させられないか
|
48
|
+
|
49
|
+
エンドポイントで縛る方法があります。
|
50
|
+
middlewareがぴったりなので、辛いでしょうが解説しますので頑張って読んでください。
|
51
|
+
[app.use([path,] callback [, callback...])](http://expressjs.com/ja/api.html#app.use)
|
52
|
+
|
53
|
+
Expressに於けるミドルウェアは、`req, res, next`の順番で引数を要求する関数を指します。
|
54
|
+
|
55
|
+
```JavaScript
|
56
|
+
var express = require('express');
|
57
|
+
var app = express();
|
58
|
+
app.use(function (req, res, next) {
|
59
|
+
// リクエストのパスが一致しなかったら勝手に400番エラー返すようにしよう
|
60
|
+
if (req.params.pass === 'my_password') {
|
61
|
+
// 認証出来たリクエストは次へ
|
62
|
+
next();
|
63
|
+
} else {
|
64
|
+
// 認証失敗したリクエストは400エラー返して殺す
|
65
|
+
res.status(499).end('リクエストは失敗です。');
|
66
|
+
// nextを実行しなければ自動的にそこで止まる
|
67
|
+
}
|
68
|
+
});
|
69
|
+
```
|
70
|
+
|
71
|
+
これをかっこよく別ファイルに移動するとmiddlewareになります。
|
72
|
+
|
73
|
+
```JavaScript
|
74
|
+
// app.js
|
75
|
+
var express = require('express');
|
76
|
+
var my_auth = require('./my_auth.js');
|
77
|
+
var app = express();
|
78
|
+
app.use(my_auth);
|
79
|
+
|
80
|
+
// my_auth.js
|
81
|
+
module.exports = function (req, res, next) {
|
82
|
+
if (req.params.pass === 'my_password') {
|
83
|
+
next();
|
84
|
+
} else {
|
85
|
+
res.status(499).end('リクエストは失敗です。');
|
86
|
+
}
|
87
|
+
}
|
88
|
+
```
|
89
|
+
|
90
|
+
次、app.useは第一引数に文字列を設定出来ます。
|
91
|
+
admin配下にだけ適用したければ下記のように記載すれば済むでしょう。
|
92
|
+
|
93
|
+
```JavaScript
|
94
|
+
app.use('/admin(/*)?', my_auth);
|
95
|
+
```
|
96
|
+
|
97
|
+
このようにadmin配下は認証機能を仕込んでおけば、publicディレクトリ配下にadmin/index.jsみたいなファイルが設置してあっても認証が必要になりそうです。
|
98
|
+
|
99
|
+
useは上に指定した順番で適用されていくので、
|
100
|
+
`express.static`より前に書けば認証で守れたかと思います(未確認なので検証してみてください)
|