增加登录设备展示

This commit is contained in:
hanhh 2021-09-25 00:41:38 +08:00
parent 381c32a3b4
commit 9ab08a71c0
3 changed files with 40 additions and 10 deletions

View File

@ -50,6 +50,7 @@ export default class AuthService {
twoFactorActivated,
twoFactorActived,
tokens = {},
platform,
} = content;
// patch old field
twoFactorActivated = twoFactorActivated || twoFactorActived;
@ -103,22 +104,29 @@ export default class AuthService {
retries: 0,
lastip: ip,
lastaddr: address,
platform: req.platform,
isTwoFactorChecking: false,
});
await this.notificationService.notify(
'登陆通知',
`你于${new Date(
timestamp,
).toLocaleString()} ${address} ip地址 ${ip}`,
`你于${new Date(timestamp).toLocaleString()}${address} ${
req.platform
} ip地址 ${ip}`,
);
await this.getLoginLog();
await this.insertDb({
type: AuthDataType.loginLog,
info: { timestamp, address, ip, status: LoginStatus.success },
info: {
timestamp,
address,
ip,
platform: req.platform,
status: LoginStatus.success,
},
});
return {
code: 200,
data: { token, lastip, lastaddr, lastlogon, retries },
data: { token, lastip, lastaddr, lastlogon, retries, platform },
};
} else {
this.updateAuthInfo(content, {
@ -126,17 +134,24 @@ export default class AuthService {
lastlogon: timestamp,
lastip: ip,
lastaddr: address,
platform: req.platform,
});
await this.notificationService.notify(
'登陆通知',
`你于${new Date(
timestamp,
).toLocaleString()} ${address} ip地址 ${ip}`,
`你于${new Date(timestamp).toLocaleString()}${address} ${
req.platform
} ip地址 ${ip}`,
);
await this.getLoginLog();
await this.insertDb({
type: AuthDataType.loginLog,
info: { timestamp, address, ip, status: LoginStatus.fail },
info: {
timestamp,
address,
ip,
platform: req.platform,
status: LoginStatus.fail,
},
});
return { code: 400, message: config.authError };
}
@ -243,6 +258,7 @@ export default class AuthService {
this.updateAuthInfo(authInfo, {
lastip: ip,
lastaddr: address,
platform: req.platform,
});
return { code: 430, message: '验证失败' };
}

View File

@ -77,7 +77,14 @@ const Login = () => {
const checkResponse = (data: any) => {
if (data.code === 200) {
const { token, lastip, lastaddr, lastlogon, retries = 0 } = data.data;
const {
token,
lastip,
lastaddr,
lastlogon,
retries = 0,
platform,
} = data.data;
localStorage.setItem(config.authKey, token);
notification.success({
message: '登录成功!',
@ -89,6 +96,7 @@ const Login = () => {
</div>
<div>{lastaddr || '-'}</div>
<div>IP{lastip || '-'}</div>
<div>{platform || '-'}</div>
<div>{retries > 0 ? `失败${retries}` : '成功'}</div>
</>
),

View File

@ -45,6 +45,12 @@ const columns = [
key: 'ip',
align: 'center' as const,
},
{
title: '登陆设备',
dataIndex: 'platform',
key: 'platform',
align: 'center' as const,
},
{
title: '登陆状态',
dataIndex: 'status',