私たちは、データベース内の特定のユーザー専用に作成されたアプリケーションをビルドしています。アプリは誰にもアクセスできないようにする必要があります。サーブユーザーが認証されている場合のエクスプレス付き角度アプリ
私たちの考えは、私たちが持っているアプリに関するいくつかの情報とともに、単純なHTMLファイルを提供することです。アプリのバックエンドはnodejsでなければならず、ユーザーが認証APIから提供され、ドメインに添付されたCookieを持っているかどうかを確認する必要があります。ユーザーがCookieを持っている場合は、そのユーザーにアプリケーションフォルダを提供する必要があります。
認証されていない場合は、jsファイルとそのアプリケーションに属するすべてのファイルを一般から保護したいと考えています。
単純なHTMLファイルでは、基本的には「私は認証されており、アプリケーションを閲覧させてください」というボタンがあります。
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Landing page</title>
</head>
<body>
<h1>Landing page app!!!</h1>
<input onclick="location.href='/app';" type="submit"
value="I'm authenticated, let me browse the app!"/>
</body>
</html>
ノードサーバーには/app
というルートがあります。
const express = require('express');
const app = express();
const port = process.env.PORT || 9090;
const fs = require('fs');
app.use(express.static('public')); //only contains index.html
app.listen(port, (err) => {
if (err) {
console.log(err);
}
});
app.get('/app', (req, res) => {
if(req.user.isAuthenticated){
//Psuedo code below
res.send(WholeAngularAppToUser());
}
else{
// User should stay on landing page
// with information about that they are not authenticated
}
});
角度アプリ全体をユーザーに送信するにはどうすればよいですか?
はい!これに加えて、/にアクセスするときに同じindex.htmlファイルを提供する必要があります。それはどのように達成されますか? – petur
別のルートを設定してください。今回は '/'のパスを指定して、そこからインデックスファイルを提供してください。異なるルートで同じファイルを処理できます。ファイル名を指定しない場合は、ファイル名を指定してください。 'app.get( '/'、function(req、res){res.sendFile(path.join(__ dirname、 'public/index.html'))})' –