node.js で Cookie を使用しないセッション管理を探しています。URL にパラメーターを渡すようなもの&session_id=
です。リクエストに session_id が含まれている場合、セッションの有効期限が切れていることがわかります。ライブラリを見てきましたがconnect
、Cookie ベースのみのようです。
4 に答える
警告
session id
を GET パラメータとして渡すことは、悪い習慣と見なされます。なんで?人々は通常気にせず、session id
おそらくセッション ID を含むリンクを公開/共有するため、危険です。
session_id
また、ユーザーが Web 上の外部リンクをクリックして別のサイトに移動すると、その新しいサイトがリファラー リンクに表示されるため、これも問題です。
だから私はそれが良い考えだとは思わない。クッキーはより安全です。
見てください:セッションハイジャック
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
ビューでは、たとえばプロファイル メニューを生成するために使用できます。
あなたが使用することができます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>
受信したリクエストごとに、それに応じてすべてのクライアント Cookie を取得します。「Set-Cookie」を使用して、応答 HTTP ヘッダーにクライアント Cookie を設定することもできます。
GET パラメータの使用は安全ではありません。どのユーザーも誤ってセッション ID を共有する可能性がありますが、100% のセキュリティが必要な場合は、Cookie を介してセッション ID を共有し、スヌーパーが Cookie を盗むのを防ぐために HTTPS を使用します。