本方法因为是根据思路纯手写,代码可以再简化,功能尝试没问题,最主要就是在登陆验证中的逻辑,checkLogin()方法是登录前的验证,而真正的登陆方式采用的是Shiro,若不是采用Shiro登陆,将该逻辑采用到自己登陆的方法中即可实现
一、用户验证必须字段 用户实体类中User.java添加一下字段,可自选持久化工具,本次采用jpa作为持久化工具
除了用户id,账户,密码之外其中还必须有三个字段lastLoginErrorTime最后一次登陆错误时间、loginErrorcount登陆错误计数、isLocked是否锁定(0、未锁定;1、锁定)
@Entity
@Table(name = "user_info")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class UserInfo implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 用户模式(0,为管理员;1,为普通用户)
*/
@Column
private Integer userModel=1;//默认为普通用户
//public static enum UserType {
//SUPER, NORMAL
//}
/**
* 主键
*/
@Id
@Column(name = "user_id")
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer userId;
/**
* 登录帐号
*/
@Column//(unique = true)
private String userName;
/**
* 用户密码
*/
@Column
private String password="";
/**
* 角色对应外键
*/
@Column
private Integer roleId;
/**
* 部门对应外键
*/
@Column
private Integer departmentId;
/**
* 添加时间
*/
@Column
private Date addTime;
/**
* 最后一次登录时间
*/
@Column
private Date lastLoginTime;
/**
* 最后一次登陆错误时间
*/
@Column(name = "last_login_error_time",column