koa2ネイティブ関数はクッキーの動作を提供しますが、セッションの操作を提供していませんでした。セッションは達成することは、自分のまたはサードパーティのミドルウェアを通じて達成することができます。
- データのセッション少量の場合は、ダイレクト・メモリがあるかもしれません
- セッションデータが大きい場合は、セッションデータ記憶媒体を格納する必要があります
データベース記憶方式
- セッションは、データベースに格納されているのRedis
- 私たちは、ミドルウェアを使用する必要があります
- 記憶媒体を提供することKOA汎用セッションkoa2ミドルウェア処理セッションは、読み書きインターフェースを。
- セッションをKOA-RedisのデータがデータベースのRedisのKOA-一般的なセッションミドルウェアに読み取りと書き込みの操作を提供します。
- セッションIDデータベースに対応したメモリとデータ
- ページを保存するために格納されたデータベースは、クッキーをセッションID
- 取得情報にセッションIDクッキーに応じてセッションを対応
Redisのインストール:https://www.runoob.com/redis/redis-install.html
インストールが正常に完了した後、Redisのルートディレクトリを入力し、実行します。
Redisのサーバーredis.windows.conf
成功ショー:
インストールの依存関係:
NPM KOA-一般的なセッションKOA-Redisのインストール
デモ:
1 CONST =興亜必要とする( 'KOA' ) 2 CONST = redisStore( 'KOA-Redisの'が必要) 。3 CONST =( 'セッションKOA汎用'セッションを必要とする) 。4 。5アプリ= constの新しい新コーア() 。6 。7 // データベースオブジェクト 。8 CONST =ストア。redisStore()クライアント 9 10 // 暗号化処理のセッションで使用される 。11 app.keysは= [ 'キーは'、 'keyskeys' ] 12は 13である app.use(セッション({ 14 // オプション 15 キー: "SESSION_ID" 、 16 接頭語: "県" 、 17 店舗:redisStore() 18 })) 19 20 app.use(非同期CTX => { 21 であれば(ctx.request.url === '/セット' ){ 22 // 设置セッション 23 ctx.session = { 24 USER_ID:Math.random()のtoString(16).slice(2。).toUpperCase()、 25 カウント:0 26 } 27 28 // 直接操作Redisの 29 のawait store.hset( '名前'、 'テスト'、 'メッシ」) 30 31 ctx.body = { 32 コード:0 33 } 34 } 35 36 // 输出信息 37 であれば(ctx.request.url === '/' ){ 38 CONST名=のawait store.hget( '名前'、 '試験' ) 39 40 ctx.session.count ++ 41 42 ctx.body = { 43 名、 44 セッション:ctx.session 45 } 46 } 47 }) 48 49 app.listen(4000、()=> { 50 はconsole.log( 'で実行しているサーバー:4000' ) 51 })
52
実行します。
ノードdemo.js
効果: