实体类:hr,要继承UserDetails,并实现里面的一些方法

    1. package org.lizhen.vhrdemo.model;
    2. import com.fasterxml.jackson.annotation.JsonIgnore;
    3. import org.springframework.security.core.GrantedAuthority;
    4. import org.springframework.security.core.authority.SimpleGrantedAuthority;
    5. import org.springframework.security.core.userdetails.UserDetails;
    6. import java.util.ArrayList;
    7. import java.util.Collection;
    8. import java.util.List;
    9. import java.util.Objects;
    10. public class Hr implements UserDetails {
    11. private Integer id;
    12. private String name;
    13. private String phone;
    14. private String telephone;
    15. private String address;
    16. private Boolean enabled;
    17. private String username;
    18. private String password;
    19. private String userface;
    20. private String remark;
    21. private List<Role> roles;
    22. @Override
    23. public boolean equals(Object o) {
    24. if (this == o) return true;
    25. if (o == null || getClass() != o.getClass()) return false;
    26. Hr hr = (Hr) o;
    27. return Objects.equals(username, hr.username);
    28. }
    29. @Override
    30. public int hashCode() {
    31. return Objects.hash(username);
    32. }
    33. public List<Role> getRoles() {
    34. return roles;
    35. }
    36. public void setRoles(List<Role> roles) {
    37. this.roles = roles;
    38. }
    39. public Integer getId() {
    40. return id;
    41. }
    42. public void setId(Integer id) {
    43. this.id = id;
    44. }
    45. public String getName() {
    46. return name;
    47. }
    48. public void setName(String name) {
    49. this.name = name == null ? null : name.trim();
    50. }
    51. public String getPhone() {
    52. return phone;
    53. }
    54. public void setPhone(String phone) {
    55. this.phone = phone == null ? null : phone.trim();
    56. }
    57. public String getTelephone() {
    58. return telephone;
    59. }
    60. public void setTelephone(String telephone) {
    61. this.telephone = telephone == null ? null : telephone.trim();
    62. }
    63. public String getAddress() {
    64. return address;
    65. }
    66. public void setAddress(String address) {
    67. this.address = address == null ? null : address.trim();
    68. }
    69. public void setEnabled(Boolean enabled) {
    70. this.enabled = enabled;
    71. }
    72. public String getUsername() {
    73. return username;
    74. }
    75. @Override
    76. public boolean isAccountNonExpired() {
    77. return true;
    78. }
    79. @Override
    80. public boolean isAccountNonLocked() {
    81. return true;
    82. }
    83. @Override
    84. public boolean isCredentialsNonExpired() {
    85. return true;
    86. }
    87. @Override
    88. public boolean isEnabled() {
    89. return enabled;
    90. }
    91. public void setUsername(String username) {
    92. this.username = username == null ? null : username.trim();
    93. }
    94. @Override
    95. @JsonIgnore
    96. public Collection<? extends GrantedAuthority> getAuthorities() {
    97. List<SimpleGrantedAuthority> authorities = new ArrayList<>(roles.size());
    98. for (Role role : roles) {
    99. authorities.add(new SimpleGrantedAuthority(role.getName()));
    100. }
    101. return authorities;
    102. }
    103. public String getPassword() {
    104. return password;
    105. }
    106. public void setPassword(String password) {
    107. this.password = password == null ? null : password.trim();
    108. }
    109. public String getUserface() {
    110. return userface;
    111. }
    112. public void setUserface(String userface) {
    113. this.userface = userface == null ? null : userface.trim();
    114. }
    115. public String getRemark() {
    116. return remark;
    117. }
    118. public void setRemark(String remark) {
    119. this.remark = remark == null ? null : remark.trim();
    120. }
    121. }

    image.png

    HrService:需要继承UserDetailsService

    @Service
    public class HrService implements UserDetailsService {
    
        @Autowired
        HrMapper hrMapper;
        @Autowired
        HrRoleMapper hrRoleMapper;
    
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            Hr hr = hrMapper.loadUserByUsername(username);
            if (hr == null) {
                throw new UsernameNotFoundException("用户名不存在!");
            }
            hr.setRoles(hrMapper.getHrRolesById(hr.getId()));
            return hr;
        }
    }
    

    image.png

    loadUserByUsername()内部调用userMapper的loadUserByUsername(),这是自己写的。是为了从数据库里查询相关信息。查出来后,交给springSecurity去对比密码就好了。