2017-09-07 11 views
0

質問があります。クライアント側のAngularJSとサーバー側のアプリケーションのノードのビューを管理する正しい方法は何ですか?AngularJSとノードによるビューの処理

ログイン/登録フォームの「index.html」とチャットウィンドウなどの「chat.html」の2つのhtmlファイルを使用して、ログイン/登録機能を備えた簡単なチャットアプリケーションを開発しています。このようなノード(認証はまだ実装されていません):

const express = require('express'); 
const app = express(); 
const http = require('http').Server(app); 
const io = require('socket.io').listen(http); 
const path = require('path'); 

app.use(express.static(path.resolve('../client/'))); 

app.get('/', function (req, res) { 
    res.sendFile(path.resolve('../client/html/index.html')); 
}); 

app.get('/chat', function (req, res) { 
    res.sendFile(path.resolve('../client/html/chat.html')); 
}); 

または?私はかなり混乱しています。助けてください。

EDIT: もう1つ質問があります。ここで認証を行う正​​しい方法は何ですか?ユーザーデータは、サーバーにjsonsとして送信するか、 'form'要素を使用してhtmlレベルで管理する方がよいでしょうか?

+0

複数の質問は悪い選択です。あなたは[How to Ask](https://stackoverflow.com/help/how-to-ask) – araknoid

+0

を読んでください。さて、私は次回これを遵守します。 – dudinii

答えて

0

私は物事を見ているから、あなたは角度を使ってSPAのことを十分に活用していないので、正しい方法は次のようなものです: 私はあなたにコードを変更することを許可するかもしれません。ビットiが一つだけindex.htmlファイルを送信するために主要なアイデアがあるこの

const express = require('express'); 
const app = express(); 
const http = require('http').Server(app); 
const io = require('socket.io').listen(http); 
const path = require('path'); 

//Serving here your whole public or dist files. 
app.use("/", express.static(path.join(__dirname, '../../dist/'))); 

//Instead of returning pages you return Json data. 
app.get('/chat', function (req, res) { 

}); 

ようにそれを行うだろう、これは横にあなたのAngularJSコードとフロントエンドルート(NG-ルータ/ UI-ルータ)1を開催しますすべてのフラグメントとコントローラ/工場に...

あなたのルートを確保することについて、または主にここからあなたのExpressルートを切り替える必要があるためHtmlファイルを提供してJsonデータを提供するには、データルートを確保します。Passport を使用するよりも優れたソリューションはありません。そこで見つかった戦略の1つを実装します。 Passport

あなたはJSONウェブトークンを実装し、社会ログインおよび他の多くのより多くの、そしてあなたは、単に次のようにする必要がありますあなたのルートに追加することができます。

app.get('/chat', passport.authenticate('jwt', { 
     session: false 
}), (req, res) => { 

}); 

それは単に急行ミドルウェアとして機能しますあなたの要求があなたが作成したセキュリティルールを尊重していることが判明した場合は、それを渡すか、それ以外の場合はあなたの403の無許可の応答を与えます。

私はこれがあなたが必要とするすべてをまとめたと思います。

+0

だから、私は1つのルート上でhtmlだけを返します: "/"とチャットビューは、 "/チャット"のget requestを呼び出すことによってアクセスされ、以前にユーザーを認証した後に何をすべきですか? – dudinii

+0

よくあることですが、Angularjsルート内にindex.htmlを1つだけ戻したいので、ui.routerまたはng-routerルートの内側に/ chatルートを配置して、そこからデータを取得しますnodejsは保護されるルートです。 –

+0

しかし、ビューの切り替えは角度で行う必要がありますか? – dudinii

関連する問題