프로젝트에서 Babel을 사용하지 않는 경우 Babel 없이 이 버전을 사용해 볼 수 있습니다.
koa 세션2
Redis 또는 Babel이 포함된 mongodb와 같은 사용자 정의 스토어에서 세션 사용을 가져오거나 설정하는 Koa2용 미들웨어
koa 세션2
Redis 또는 Babel이 포함된 mongodb와 같은 사용자 정의 스토어에서 세션 사용을 가져오거나 설정하는 Koa2용 미들웨어
프로젝트에서 Babel을 사용하지 않는 경우 Babel 없이 이 버전을 사용해 볼 수도 있습니다.
설치npm install koa-session2
사용import Koa from "koa";<br>
import session from "koa-session2";<br>
<br>
const app = new Koa();<br>
<br>
app.use(session({<br>
key: "SESSIONID", //default "koa:sess" <br>
}));
"koa"에서 Koa 가져오기;
"koa-session2"에서 세션 가져오기;
const app = 새로운 Koa();import Redis from "ioredis";<br>
import {Store} from "koa-session2";<br>
<br>
export default class RedisStore extends Store {<br>
constructor() {<br>
super();<br>
this.redis = new Redis();<br>
}<br>
<br>
async get(sid) {<br>
return await this.redis.get(`SESSION:${sid}`);<br>
}<br>
<br>
async set(session, opts) {<br>
if(!opts.sid) {<br>
opts.sid = this.getID(24);<br>
}<br>
await this.redis.set(`SESSION:${opts.sid}`, session);<br>
return opts.sid;<br>
}<br>
<br>
async destroy(sid) {<br>
return await this.redis.del(`SESSION:${sid}`);<br>
}<br>
}
import Koa from "koa";<br>
import session from "koa-session2";<br>
import Store from "./Store.js";<br>
<br>
const app = new Koa();<br>
<br>
app.use(session({<br>
store: new Store()<br>
}));<br>
<br>
app.use(ctx => {<br>
let user = ctx.session.user;<br>
<br>
ctx.session.view = "index";<br>
});
app.use(세션({
키: "SESSIONID", //기본값 "koa:sess"
}));
맞춤형 스토어<br>
Store.js<br>'ioredis'에서 Redis 가져오기<br>
"koa-session2"에서 {Store} 가져오기;<br>
<br>
기본 클래스 내보내기 RedisStore 확장 Store {<br>
생성자() {<br>
슈퍼();<br>
this.redis = new Redis();<br>
}<br>
<br>
비동기 get(sid) {<br>
반환 대기 this.redis.get(`SESSION:${sid}`);<br>
}<br>
<br>
비동기 세트(세션, 옵션) {<br>
if(!opts.sid) {
opts.sid = this.getID(24);
}
wait this.redis.set(`SESSION:${opts.sid}`, session);
opts.sid 반환;
}
비동기 파괴(sid) {
반환을 기다리고 this.redis.del(`SESSION:${sid}`);
}
}
main.js"koa"에서 Koa 가져오기;
"koa-session2"에서 세션 가져오기;
"./Store.js"에서 Store 가져오기;
const app = 새로운 Koa();
app.use(세션({
상점: 새 스토어()
}));
app.use(ctx => {
let 사용자 = ctx.session.user;
ctx.session.view = "색인";
});옵션
쿠키를 기반으로 하는 대부분의 옵션키: 쿠키의 세션 ID 저장 문자열
store: 맞춤 스토어를 위한 클래스({Store} 확장, func: #get(sid), #set(session, opts), #destory(sid))
maxAge: Date.now()에서 만료되는 밀리초를 나타내는 숫자
만료: 쿠키의 만료 날짜를 나타내는 날짜 개체(기본적으로 세션 종료 시 만료됨).
경로: 쿠키의 경로를 나타내는 문자열(기본적으로 /)
domain: 쿠키의 도메인을 나타내는 문자열(기본값 없음)
secure: 쿠키가 HTTPS를 통해서만 전송되는지 여부를 나타내는 부울입니다(HTTP의 경우 기본적으로 false, HTTPS의 경우 기본적으로 true).
httpOnly: 쿠키가 HTTP(S)를 통해서만 전송되고 클라이언트 JavaScript에서는 사용할 수 없는지 여부를 나타내는 부울입니다(기본적으로 true).
signed: 쿠키가 서명되는지 여부를 나타내는 부울입니다(기본적으로 false). 이것이 사실이라면 동일한 이름에 .sig 접미사가 추가된 또 다른 쿠키도 첫 번째 키그립 키에 대한 쿠키 이름=쿠키 값의 해시를 나타내는 27바이트 URL 안전 base64 SHA1 값과 함께 전송됩니다. 이 서명 키는 다음에 쿠키가 수신될 때 변조를 감지하는 데 사용됩니다.
overwrite: 이전에 설정한 동일한 이름의 쿠키를 덮어쓸지 여부를 나타내는 부울입니다(기본적으로 false). 이것이 사실인 경우, 동일한 요청 중에 동일한 이름으로 설정된 모든 쿠키는(경로 또는 도메인에 관계없이) 이 쿠키를 설정할 때 Set-Cookie 헤더에서 필터링됩니다.라이선스
MIT
KoaHub.js -- 基于 Koa.js 平台的 Node.js 웹 快速开发框架
官网:http://js.koahub.com