我正在嘗試使用快速會話跟蹤arcade.ly上的用戶會話。我沒有指定genid
的值,因爲我很高興(現在)堅持使用默認ID生成。問題是沒有爲我的會話生成ID。快速會話未在我的會話中設置ID
下面是我在我的服務器上執行字符串化通過捕捉req.session
一個例子:
info: Session info: {"cookie":{"originalMaxAge":31535989265,"expires":"2018-07-31T21:30:05.827Z","secure":false,"httpOnly":true,"path":"/","sameSite":"lax"}}
正如你所看到的,這一切都從沒有標識的分開好。我絕對需要的ID,因爲我希望能夠如用戶開始遊戲,結束遊戲,他們的最終得分,與該會話的某些信息進行關聯,我想不管他們是否登錄到其關聯或不。
如果他們選擇稍後登錄記錄他們的分數,然後我可以與他們的會話登錄相關聯,而是迫使他們登錄的前期吸的用戶體驗。
我的代碼看起來是這樣的:在腦海
let cookieExpiry = new Date();
cookieExpiry.setFullYear(cookieExpiry.getFullYear() + 1);
let sessionOptions = {
cookie: {
path: '/',
httpOnly: true,
secure: false,
maxAge: null,
expires: cookieExpiry,
sameSite: 'lax',
},
name: 'arcadely.sid',
resave: false,
saveUninitialized: false,
secret: sessionSecret.secret
};
// In production we want to use secure cookies
if (!debugging.isDebugging()) {
app.set('trust proxy', 1); // Required for secure cookie to work behind Cloudflare
sessionOptions.cookie.secure = true;
sessionOptions.proxy = true;
}
app.use(session(sessionOptions));
app.use(cookieParser());
app.use(bodyParser.json());
// app.use(passport.initialize());
// app.use(passport.session());
// Dynamic content
app.get('/', homepages.serveOrRedirect);
app.get(/^\/star-castle\/?$/, (req, res) => { res.redirect(301, '/games/starcastle/'); });
app.get(/^\/games\/asteroids\/?$/, games.loadAsteroids);
app.get(/^\/games\/space-invaders\/?$/, games.loadSpaceInvaders);
app.get(/^\/games\/starcastle\/?$/, games.loadStarCastle);
軸承是我看這個在我的網站的調試版本,爲什麼我不能在會話對象中看到任何會話ID?如果它沒有存儲在那裏存儲在哪裏,我如何得到它?
(護照的原因是因爲最終我想插入護照登錄,但現在,我已經評論它只是爲了從查詢中消除它,因爲它是。此外,sessionSecret.secret
只是一個大的隨機字符串存儲在另一個文件爲方便。)
任何幫助非常感謝。
非常感謝,
巴特
這聽起來像你可能需要'uuid'。試着在npmjs.org上查找'uuidv4'。 YOu可能需要包裝並執行'sessionID = uuidv4()'並根據需要進行使用。我不確定這是否是您需要的。 – agm1984
謝謝 - 我必須承認,我很想嘗試提供自定義'genid'實現,使用'uuid'或類似的東西,只是爲了檢查是否實際上是問題或沒有。根據文檔,理論上它不應該是這樣,但是文檔總是有點過時,對吧?早上的一個,methinks。 –