2011-07-19 8 views
0

私はENV配列にTEH現在のユーザーに関連付けられたデータを格納するいくつかのサンプルコードが提供されている。ENV配列/ユーザーセッション

ENV['token'] = request.env['omniauth.auth']['credentials']['token']

私はレールに新たなんだ、と私はそれを理解これはRuby/Railsに渡される環境変数配列です。

これは情報を入れるのに適切な場所ではないと思いますか?むしろそれはユーザセッションにあるべきですか?

+0

あなたが参照しているサンプルコード(どこから)を正確に指定できませんでしたか。 – naren

答えて

1

私は同意します。 ENVを修正する必要がある場合は、スクリプトの実行の冒頭にあるはずです。これは要求ごとに変わるデータなので、グローバルではありません。それは奇妙なだけでなく、複数のリクエストが一度に実行されるスタックでアプリケーションが終了し、リクエストの使用が完了する前にこの値が変更されると問題が発生する可能性があります。

私たちはrequestを使用しているので、私はコントローラーのコンテキスト内にいると思います。したがって、これをインスタンス変数@tokenに設定することをお勧めします。この変数は、コントローラとビュー内のどこにでもアクセスできますが、この要求に関連付けられています。それは大きな範囲を与えますが、必要以上に大きくはありません。

これはもちろん、コントローラコードについてのものであることを前提としています。もしそうなら、そこに行きますが、私は、ラックミドルウェアやもっと複雑なものについて話をしていないことを確認するために、さらにいくつかの文脈が好きです。

+0

いいえ、そのコントローラコードです。そして、かわいそうな副作用は私のブラウザを閉じることができ、サーバーが立ち上がっている限り、私は最初のユーザーとしてログインしています。私はサンプルを「失敗」としてチョークするつもりです –

関連する問題