1

node.js で Cookie を使用しないセッション管理を探しています。URL にパラメーターを渡すようなもの&session_id=です。リクエストに session_id が含まれている場合、セッションの有効期限が切れていることがわかります。ライブラリを見てきましたがconnect、Cookie ベースのみのようです。

4

4 に答える 4

4

警告

session idを GET パラメータとして渡すことは、悪い習慣と見なされます。なんで?人々は通常気にせず、session idおそらくセッション ID を含むリンクを公開/共有するため、危険です。

session_idまた、ユーザーが Web 上の外部リンクをクリックして別のサイトに移動すると、その新しいサイトがリファラー リンクに表示されるため、これも問題です。

だから私はそれが良い考えだとは思わない。クッキーはより安全です。

見てください:セッションハイジャック

于 2013-05-06T07:20:29.780 に答える
0

node.js のストアでセッションを使用できます。たとえば、高速アプリケーションがあり、webapp でシステムのようなセッションを使用したいとします。これにはconnect-mongoモジュールを使用できます。これにより、セッションを db に保存できます。app.js で

var express = require('express'),
    , mongoStore = require('connect-mongo')(express);

var app = express();

app.configure('all', function () {
    app.use(express.session({
        secret: "terces",
        cookie: { maxAge: 24 * 60 * 60 * 1000 },
        store: new mongoStore({
            url: your_db_url
        })
    }));
    app.use(function(req, res, next) {
        res.locals.session = req.session;
        next();
    });
});

上記の基本的なコードを使用すると、コントローラーとビューで直接使用できる明示的なセッションがあります。コントローラーで;

app.post('/blog/create/?', function(req, res, next) {
    if (!req.session.user) {
        next("You need to login in order to create blog!");
    }
});

session.userビューでは、たとえばプロファイル メニューを生成するために使用できます。

于 2014-02-13T13:07:25.173 に答える
0

あなたが使用することができますlocalstorageまたはsessionStorage..

  • クッキーとほぼ同じ
  • クッキーではありません
  • クッキーよりいい!

詳細: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage

非常に -非常に- 使いやすいです...たとえばJsで:

<script>
    // check if Storage is avaible
  if(typeof(Storage)!=="undefined") {
    // Save data to local storage (no exiparion date)
    localStorage.setItem("name_always", "bxx");
    // Save data to the current session (removes when the tab is closed)
    sessionStorage.setItem("name_now", "bxx");
  } else {
    // No Storage support...
  }
  // Access to stored data
  alert( "For only now, my name is: " + sessionStorage.getItem("name_now"));
  alert( "Every day, my name is: " + localStorage.getItem("name_always"));
</script>

タグ:

于 2014-02-13T12:56:43.640 に答える
0

受信したリクエストごとに、それに応じてすべてのクライアント Cookie を取得します。「Set-Cookie」を使用して、応答 HTTP ヘッダーにクライアント Cookie を設定することもできます。

GET パラメータの使用は安全ではありません。どのユーザーも誤ってセッション ID を共有する可能性がありますが、100% のセキュリティが必要な場合は、Cookie を介してセッション ID を共有し、スヌーパーが Cookie を盗むのを防ぐために HTTPS を使用します。

于 2013-05-08T04:34:04.823 に答える