update 优化 sys_logininfor 丰富多种信息
parent
3fc3d52ba4
commit
5853b74efe
|
|
@ -54,6 +54,24 @@ public class SysLogininfor implements Serializable {
|
||||||
@ExcelProperty(value = "地址")
|
@ExcelProperty(value = "地址")
|
||||||
private String ipaddr;
|
private String ipaddr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登录地点
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "登录地点")
|
||||||
|
private String loginLocation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 浏览器类型
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "浏览器类型")
|
||||||
|
private String browser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作系统
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "操作系统")
|
||||||
|
private String os;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述
|
* 描述
|
||||||
*/
|
*/
|
||||||
|
|
@ -64,7 +82,7 @@ public class SysLogininfor implements Serializable {
|
||||||
* 访问时间
|
* 访问时间
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "访问时间")
|
@ExcelProperty(value = "访问时间")
|
||||||
private Date accessTime;
|
private Date loginTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求参数
|
* 请求参数
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import cn.dev33.satoken.exception.NotLoginException;
|
||||||
import cn.dev33.satoken.secure.BCrypt;
|
import cn.dev33.satoken.secure.BCrypt;
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.http.useragent.UserAgent;
|
||||||
|
import cn.hutool.http.useragent.UserAgentUtil;
|
||||||
import com.ruoyi.auth.form.RegisterBody;
|
import com.ruoyi.auth.form.RegisterBody;
|
||||||
import com.ruoyi.auth.properties.UserPasswordProperties;
|
import com.ruoyi.auth.properties.UserPasswordProperties;
|
||||||
import com.ruoyi.common.core.constant.CacheConstants;
|
import com.ruoyi.common.core.constant.CacheConstants;
|
||||||
|
|
@ -17,6 +19,7 @@ import com.ruoyi.common.core.utils.MessageUtils;
|
||||||
import com.ruoyi.common.core.utils.ServletUtils;
|
import com.ruoyi.common.core.utils.ServletUtils;
|
||||||
import com.ruoyi.common.core.utils.SpringUtils;
|
import com.ruoyi.common.core.utils.SpringUtils;
|
||||||
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.core.utils.StringUtils;
|
||||||
|
import com.ruoyi.common.core.utils.ip.AddressUtils;
|
||||||
import com.ruoyi.common.log.event.LogininforEvent;
|
import com.ruoyi.common.log.event.LogininforEvent;
|
||||||
import com.ruoyi.common.redis.utils.RedisUtils;
|
import com.ruoyi.common.redis.utils.RedisUtils;
|
||||||
import com.ruoyi.common.satoken.utils.LoginHelper;
|
import com.ruoyi.common.satoken.utils.LoginHelper;
|
||||||
|
|
@ -29,6 +32,7 @@ import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
|
@ -129,9 +133,22 @@ public class SysLoginService {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public void recordLogininfor(String username, String status, String message) {
|
public void recordLogininfor(String username, String status, String message) {
|
||||||
|
HttpServletRequest request = ServletUtils.getRequest();
|
||||||
|
final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
|
||||||
|
final String ip = ServletUtils.getClientIP(request);
|
||||||
|
|
||||||
|
String address = AddressUtils.getRealAddressByIP(ip);
|
||||||
|
// 获取客户端操作系统
|
||||||
|
String os = userAgent.getOs().getName();
|
||||||
|
// 获取客户端浏览器
|
||||||
|
String browser = userAgent.getBrowser().getName();
|
||||||
|
// 封装对象
|
||||||
LogininforEvent logininfor = new LogininforEvent();
|
LogininforEvent logininfor = new LogininforEvent();
|
||||||
logininfor.setUserName(username);
|
logininfor.setUserName(username);
|
||||||
logininfor.setIpaddr(ServletUtils.getClientIP());
|
logininfor.setIpaddr(ip);
|
||||||
|
logininfor.setLoginLocation(address);
|
||||||
|
logininfor.setBrowser(browser);
|
||||||
|
logininfor.setOs(os);
|
||||||
logininfor.setMsg(message);
|
logininfor.setMsg(message);
|
||||||
// 日志状态
|
// 日志状态
|
||||||
if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
|
if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,21 @@ public class LogininforEvent implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String ipaddr;
|
private String ipaddr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登录地点
|
||||||
|
*/
|
||||||
|
private String loginLocation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 浏览器类型
|
||||||
|
*/
|
||||||
|
private String browser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作系统
|
||||||
|
*/
|
||||||
|
private String os;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提示消息
|
* 提示消息
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,10 @@
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="访问编号" align="center" prop="infoId" />
|
<el-table-column label="访问编号" align="center" prop="infoId" />
|
||||||
<el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
|
<el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
|
||||||
<el-table-column label="地址" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true" />
|
<el-table-column label="登录地址" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true" />
|
||||||
|
<el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
|
||||||
|
<el-table-column label="浏览器" align="center" prop="browser" :show-overflow-tooltip="true" />
|
||||||
|
<el-table-column label="操作系统" align="center" prop="os" />
|
||||||
<el-table-column label="登录状态" align="center" prop="status">
|
<el-table-column label="登录状态" align="center" prop="status">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
|
<dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
|
||||||
|
|
|
||||||
|
|
@ -704,22 +704,28 @@ create table sys_logininfor (
|
||||||
info_id number(20) not null,
|
info_id number(20) not null,
|
||||||
user_name varchar2(50) default '',
|
user_name varchar2(50) default '',
|
||||||
ipaddr varchar2(128) default '',
|
ipaddr varchar2(128) default '',
|
||||||
|
login_location varchar2(255) default '',
|
||||||
|
browser varchar2(50) default '',
|
||||||
|
os varchar2(50) default '',
|
||||||
status char(1) default '0',
|
status char(1) default '0',
|
||||||
msg varchar2(255) default '',
|
msg varchar2(255) default '',
|
||||||
access_time date
|
login_time date
|
||||||
);
|
);
|
||||||
|
|
||||||
alter table sys_logininfor add constraint pk_sys_logininfor primary key (info_id);
|
alter table sys_logininfor add constraint pk_sys_logininfor primary key (info_id);
|
||||||
create unique index idx_sys_logininfor_s on sys_logininfor (status);
|
create unique index idx_sys_logininfor_s on sys_logininfor (status);
|
||||||
create unique index idx_sys_logininfor_lt on sys_logininfor (access_time);
|
create unique index idx_sys_logininfor_lt on sys_logininfor (login_time);
|
||||||
|
|
||||||
comment on table sys_logininfor is '系统访问记录';
|
comment on table sys_logininfor is '系统访问记录';
|
||||||
comment on column sys_logininfor.info_id is '访问ID';
|
comment on column sys_logininfor.info_id is '访问ID';
|
||||||
comment on column sys_logininfor.user_name is '登录账号';
|
comment on column sys_logininfor.user_name is '登录账号';
|
||||||
comment on column sys_logininfor.ipaddr is '登录IP地址';
|
comment on column sys_logininfor.ipaddr is '登录IP地址';
|
||||||
|
comment on column sys_logininfor.login_location is '登录地点';
|
||||||
|
comment on column sys_logininfor.browser is '浏览器类型';
|
||||||
|
comment on column sys_logininfor.os is '操作系统';
|
||||||
comment on column sys_logininfor.status is '登录状态(0成功 1失败)';
|
comment on column sys_logininfor.status is '登录状态(0成功 1失败)';
|
||||||
comment on column sys_logininfor.msg is '提示消息';
|
comment on column sys_logininfor.msg is '提示消息';
|
||||||
comment on column sys_logininfor.access_time is '访问时间';
|
comment on column sys_logininfor.login_time is '访问时间';
|
||||||
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
|
|
||||||
|
|
@ -719,22 +719,28 @@ create table if not exists sys_logininfor
|
||||||
info_id int8,
|
info_id int8,
|
||||||
user_name varchar(50) default ''::varchar,
|
user_name varchar(50) default ''::varchar,
|
||||||
ipaddr varchar(128) default ''::varchar,
|
ipaddr varchar(128) default ''::varchar,
|
||||||
|
login_location varchar(255) default ''::varchar,
|
||||||
|
browser varchar(50) default ''::varchar,
|
||||||
|
os varchar(50) default ''::varchar,
|
||||||
status char default '0'::bpchar,
|
status char default '0'::bpchar,
|
||||||
msg varchar(255) default ''::varchar,
|
msg varchar(255) default ''::varchar,
|
||||||
access_time timestamp,
|
login_time timestamp,
|
||||||
constraint sys_logininfor_pk primary key (info_id)
|
constraint sys_logininfor_pk primary key (info_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create unique index idx_sys_logininfor_s ON sys_logininfor (status);
|
create unique index idx_sys_logininfor_s ON sys_logininfor (status);
|
||||||
create unique index idx_sys_logininfor_lt ON sys_logininfor (access_time);
|
create unique index idx_sys_logininfor_lt ON sys_logininfor (login_time);
|
||||||
|
|
||||||
comment on table sys_logininfor is '系统访问记录';
|
comment on table sys_logininfor is '系统访问记录';
|
||||||
comment on column sys_logininfor.info_id is '访问ID';
|
comment on column sys_logininfor.info_id is '访问ID';
|
||||||
comment on column sys_logininfor.user_name is '用户账号';
|
comment on column sys_logininfor.user_name is '用户账号';
|
||||||
comment on column sys_logininfor.ipaddr is '登录IP地址';
|
comment on column sys_logininfor.ipaddr is '登录IP地址';
|
||||||
comment on column sys_logininfor.status is '登录状态(0成功 1失败)';
|
comment on column sys_logininfor.login_location is '登录地点';
|
||||||
comment on column sys_logininfor.msg is '提示消息';
|
comment on column sys_logininfor.browser is '浏览器类型';
|
||||||
comment on column sys_logininfor.access_time is '访问时间';
|
comment on column sys_logininfor.os is '操作系统';
|
||||||
|
comment on column sys_logininfor.status is '登录状态(0成功 1失败)';
|
||||||
|
comment on column sys_logininfor.msg is '提示消息';
|
||||||
|
comment on column sys_logininfor.login_time is '访问时间';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 17、通知公告表
|
-- 17、通知公告表
|
||||||
|
|
|
||||||
|
|
@ -550,12 +550,15 @@ create table sys_logininfor (
|
||||||
info_id bigint(20) not null comment '访问ID',
|
info_id bigint(20) not null comment '访问ID',
|
||||||
user_name varchar(50) default '' comment '用户账号',
|
user_name varchar(50) default '' comment '用户账号',
|
||||||
ipaddr varchar(128) default '' comment '登录IP地址',
|
ipaddr varchar(128) default '' comment '登录IP地址',
|
||||||
|
login_location varchar(255) default '' comment '登录地点',
|
||||||
|
browser varchar(50) default '' comment '浏览器类型',
|
||||||
|
os varchar(50) default '' comment '操作系统',
|
||||||
status char(1) default '0' comment '登录状态(0成功 1失败)',
|
status char(1) default '0' comment '登录状态(0成功 1失败)',
|
||||||
msg varchar(255) default '' comment '提示信息',
|
msg varchar(255) default '' comment '提示消息',
|
||||||
access_time datetime comment '访问时间',
|
login_time datetime comment '访问时间',
|
||||||
primary key (info_id),
|
primary key (info_id),
|
||||||
key idx_sys_logininfor_s (status),
|
key idx_sys_logininfor_s (status),
|
||||||
key idx_sys_logininfor_lt (access_time)
|
key idx_sys_logininfor_lt (login_time)
|
||||||
) engine=innodb comment = '系统访问记录';
|
) engine=innodb comment = '系统访问记录';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue