package com.ruoyi.common.core.domain.model; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.Collection; import java.util.Set; /** * 登录用户身份权限 * * @author Lion Li */ @Data @NoArgsConstructor @Accessors(chain = true) public class LoginUser implements UserDetails { private static final long serialVersionUID = 1L; /** * 用户ID */ private Long userId; /** * 部门ID */ private Long deptId; /** * 用户唯一标识 */ private String token; /** * 登录时间 */ private Long loginTime; /** * 过期时间 */ private Long expireTime; /** * 登录IP地址 */ private String ipaddr; /** * 登录地点 */ private String loginLocation; /** * 浏览器类型 */ private String browser; /** * 操作系统 */ private String os; /** * 权限列表 */ private Set permissions; /** * 用户名 */ private String username; /** * 密码 */ private String password; public LoginUser(String username, String password, Set permissions) { this.username = username; this.password = password; this.permissions = permissions; } public LoginUser(Long userId, Long deptId, String username, String password, Set permissions) { this.userId = userId; this.deptId = deptId; this.username = username; this.password = password; this.permissions = permissions; } @JsonIgnore @Override public String getPassword() { return password; } @Override public String getUsername() { return username; } /** * 账户是否未过期,过期无法验证 */ @JsonIgnore @Override public boolean isAccountNonExpired() { return true; } /** * 指定用户是否解锁,锁定的用户无法进行身份验证 */ @JsonIgnore @Override public boolean isAccountNonLocked() { return true; } /** * 指示是否已过期的用户的凭据(密码),过期的凭据防止认证 */ @JsonIgnore @Override public boolean isCredentialsNonExpired() { return true; } /** * 是否可用 ,禁用的用户不能身份验证 */ @JsonIgnore @Override public boolean isEnabled() { return true; } @Override public Collection getAuthorities() { return null; } }