mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 17:36:08 +08:00
core: recreate sessionId when logging in (#714)
This commit is contained in:
2 files changed
+6
-3
No files matched your search
@@ -125,6 +125,7 @@ class UserLoginHandler extends Handler {
|
||||
this.session.sudo = null;
|
||||
this.session.scope = PERM.PERM_ALL.toString();
|
||||
this.session.save = rememberme;
|
||||
this.session.recreate = true;
|
||||
this.response.redirect = redirect || ((this.request.referer || '/login').endsWith('/login')
|
||||
? this.url('homepage') : this.request.referer);
|
||||
}
|
||||
@@ -325,6 +326,7 @@ class UserRegisterWithCodeHandler extends Handler {
|
||||
this.session.uid = uid;
|
||||
this.session.sudoUid = null;
|
||||
this.session.scope = PERM.PERM_ALL.toString();
|
||||
this.session.recreate = true;
|
||||
this.response.redirect = tdoc.redirect || this.url('home_settings', { category: 'preference' });
|
||||
}
|
||||
}
|
||||
@@ -484,6 +486,7 @@ class OauthCallbackHandler extends Handler {
|
||||
await user.setById(udoc._id, { loginat: new Date(), loginip: this.request.ip });
|
||||
this.session.uid = udoc._id;
|
||||
this.session.scope = PERM.PERM_ALL.toString();
|
||||
this.session.recreate = true;
|
||||
this.response.redirect = '/';
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { PassThrough } from 'stream';
|
||||
import type { Next } from 'koa';
|
||||
import { cloneDeep, pick } from 'lodash';
|
||||
import { cloneDeep, omit, pick } from 'lodash';
|
||||
import { PERM } from '../../model/builtin';
|
||||
import * as system from '../../model/system';
|
||||
import token from '../../model/token';
|
||||
@@ -80,8 +80,8 @@ export default async (ctx: KoaContext, next: Next) => {
|
||||
: system.get('session.unsaved_expire_seconds');
|
||||
if (!ctx.session._id && !Object.getOwnPropertyNames(ctx.session).length) return;
|
||||
Object.assign(ctx.session, { updateIp: request.ip, updateUa: ua });
|
||||
if (ctx.session._id) {
|
||||
await token.update(ctx.session._id, token.TYPE_SESSION, expireSeconds, ctx.session);
|
||||
if (ctx.session._id && !ctx.session.recreate) {
|
||||
await token.update(ctx.session._id, token.TYPE_SESSION, expireSeconds, omit(ctx.session, ['_id', 'recreate']));
|
||||
} else {
|
||||
Object.assign(ctx.session, { createIp: request.ip, createUa: ua, createHost: request.host });
|
||||
[ctx.session._id] = await token.add(token.TYPE_SESSION, expireSeconds, ctx.session);
|
||||
|
||||
Reference in new issue
Block a user