2016-06-02 8 views
0

私の悪い英語を申し訳ありません!
MEAN Stack(MongoDB + Express.js + Angular.js + Node.js)とpassport.jsJWTjsonwebtokenexpress-jwt)を使用して認証を作成します。
私は何をしたいですか?
ログインルートと登録ルートは、nunjucksを使用してhtmlをレンダリングし、成功した場合は公開ディレクトリに配置してindex.htmlファイルをレンダリングします。
P.S .:これは正しい方法ですか?
私の質問は何ですか?
誰も私に言うことができます、これを行うための技術?
https://thinkster.io/mean-stack-tutorialに基づいて)私のコード:このコードで
平均スタックログイン/メインアプリケーションとは別のページに登録

app.get('/', function(req,res){ 
if (!req.user) 
    res.redirect('/about') 
else 
    res.render('index') 
}); 

app.get('/login',function(req, res) { 
    res.render('auth/login', { 
    title: 'Login' 
    }); 
}); 

app.post('/', function(req, res, next) { 
    if (!req.body.login || !req.body.password) { 
     return res.status(400).json({ message: 'Please fill out all fields' }); 
    } 
    passport.authenticate('local', function(err, user, info) { 
     if (err) { return next(err); } 
     if (user) { return res.json({ token: user.generateJWT()}); 
     /*generateJWT form user model code returns jwt.sign({}) using jsonwebtoken: 
      var jwt = require('jsonwebtoken'); 
     */ 
     } else { return res.status(401).json(info);} 
    })(req, res, next); 
    }); 

は、ログインが成功であれば、我々は、生成されたトークンを返します。 index.htmlをレンダリングするにはどうすればよいですか?生成されたトークンで何ができますか? このダミーの質問を申し訳ありません、私はまだjwtを学んでいます。ありがとう

+0

これはサーバー側のノードコードが正しいですか? –

+0

それは正しいと思う、私はちょうど走ろうとした。間違いがありますか?お返事ありがとうございます – Ramil

答えて

0

ノードはサーバー側言語です。平均スタックを使用しているため、一般的に ノードにAPIを作成し、データをクライアント側のAngularに渡す必要があります。

あなたの質問に答えるには - htmlをレンダリングするには、ログイン用の関数はコールバックを使って何かをクライアントに返す必要があり、Angularはhtmlページをレンダリングします。

生成されたトークンで行う必要があることは、次回以降、トークンを持たないサーバーへのすべての要求がエラーを生成するか、生成する必要があることです。 それ以外の人はあなたのノードAPIと望む結果を呼び出すことができます。これは、GETメソッドのために少なくとも必要です。

+0

ありがとうございます。角度で私はルートを作成するためにui-routerを使いたいと思う。しかし、私のログインページは[this](https://almsaeedstudio.com/themes/AdminLTE/pages/examples/login.html)のように見え、インデックスページは[this](https://almsaeedstudio.com/)のようですテーマ/ AdminLTE/pages/examples/blank.html)。だから私はバックエンドでのログインページと、フロントエンドでの基本的なロジック(ログイン後)を角度を使ってレンダリングする必要があると思った。 [AdminLte](https://almsaeedstudio.com/AdminLTE)のようなログインテンプレートと登録テンプレートはどのくらいですか? – Ramil