2017-08-08 6 views
0

パスポート(Koa、Mongodb、React、Redux)を介してユーザーの承認を取得しました。ログイン後にユーザー情報を読み込むSPA koa.js

router.post('/login', function(ctx, next) { 

    return passport.authenticate('local', async function(err, user, info) { 
     if (err) throw err; 

     if (user === false) { 
      ctx.status = 401; 
      ctx.body = { error: info }; 
     } else { 
      ctx.body = { 
       success: true 
      }; 
      await ctx.login(user); 
     } 
    })(ctx, next); 
}) 

ユーザーがログインすると、プロフィールページ(メインページ)にリダイレクトされます。

router.get('/login', function(ctx, next) { 
    if (ctx.isAuthenticated()) { 
     ctx.redirect('/'); 
    } else { 
     ctx.body = fs.readFileSync(path.resolve(path.join('build', 'index.html')), 'utf8') 
    } 
}); 

私は、私は常に静的ファイル(反応し、ルータを経由してクライアント上のルーティングを)渡すスパを持っているので

問題は、私はときに私は、ユーザーに関する情報を取得する方法を理解することができないということですプロファイルページがロードされました

React-componentからajax-request(feth)を送信した場合、別のセッションIDのリクエストが送信され、ユーザーに関連付けられていません。

サーバーでこれを行う必要がありますが、サーバー上のストアストレージをどのように使用するのですか?

この問題を解決するにはどうすればよいですか?

答えて

0

まあ、それが最善の方法ではないかもしれないが、これを行う最も簡単な方法は...のような

<script type="text/javascript"> 
    window.currentUser = $$USER$$ 
</script> 

をHTMLファイル内のセクションを持っている。そして、本体に置き換えるんだろう。

let content = fs.readFileSync(path.resolve(path.join('build', 'index.html')), 'utf8') 
content = content.replace('$$USER$$', JSON.stringify(user)) 
ctx.body = content 

あなたのリアクションアプリでは、window.currentUserを使用できます。

関連する問題