使用 ssm 实现登录日志记录
使用 ssm 实现登录日志记录
学习总结
一、基础准备
1. 实现效果
2. 数据表
2.1 登陆日志信息表
2.3 员工表
二、代码实现
1. SysLogLogin 实体类
@Data
public class SysLogLogin {
/** 主键 */
private Long id;
/** 登录用户 */
private Employee employee;
/** 登陆时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date loginTime;
/** IP地址 */
private String ipAddress;
}
2. LogAspect AOP切面类
@Aspect
@Component
public class LogAspect {
@Autowired
private SysLogLoginMapper sysLogLoginMapper;
// 在 Controller 中 login() 执行完之后执行这个方法
// returning:返回值
@AfterReturning(value = "execution(* *..controller.*.login(..))", returning = "result")
public void loginLog(Object result) {
// 获取 HttpServletRequest 对象
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
// ((JsonResult) result).isSuccess() 这是我写的工具类,你可以根据具体的返回值类型判断是否登录成功
// 如果登录成功就插入登录日志信息数据
if (((JsonResult) result).isSuccess()) {
// 创建日志对象
SysLogLogin sysLogLogin = new SysLogLogin();
// 获取 IP 地址
String addr = request.getRemoteAddr();
// UserContext.getEmployee() 是我写的一个工具方法,你自己写一个就好了
// 也就是把员工的数据存入到实体对象的字段上,后面连表查询方便
sysLogLogin.setEmployee(UserContext.getEmployee());
sysLogLogin.setLoginTime(new Date());
sysLogLogin.setIpAddress(addr);
// 把登录日志信息存到数据库
sysLogLoginMapper.insert(sysLogLogin);
}
}
}
3. SysLogLoginMapper mapper接口
public interface SysLogLoginMapper {
int insert(SysLogLogin record);
}
4. SysLogLoginMapper.xml 添加的 XML 文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yy.homework.mapper.SysLogLoginMapper" >
<resultMap id="BaseResultMap" type="com.yy.homework.domain.SysLogLogin" >
<id column="id" property="id" />
<result column="login_time" property="loginTime" />
<result column="ip_address" property="ipAddress" />
<result column="e_id" property="employee.id" />
<result column="e_username" property="employee.username" />
<result column="e_name" property="employee.name" />
</resultMap>
<insert id="insert" useGeneratedKeys="true" keyProperty="id" >
insert into sys_log_login (employee_id, login_time, ip_address)
values (#{employee.id}, #{loginTime}, #{ipAddress})
</insert>
</mapper>
5. applicationContext.xml 添加的 XML 文件
<!-- 包扫描 -->
<context:component-scan base-package="com.yy.homework.aspects"/>
<!-- 配置登陆日志的 AOP 注解-->
<aop:aspectj-autoproxy/>
总结
以上就是使用 ssm 实现登录日志记录的功能了,代码仅供参考,欢迎讨论交流。