创建SSC搭建Hr和HrService

首先SSC搭建,需要请搜索【大神源码论坛】dsluntan.com 客服企娥3393756370 V信17061863513,我们需要创建Hr类,即我们的用户类,该类实现了UserDetails接口,该类的属性如下:

public class Hr implements UserDetails {
private Long id;
private String name;
private String phone;
private String telephone;
private String address;
private boolean enabled;
private String username;
private String password;
private String remark;
private List<Role> roles;
private String userface;
//getter/setter省略
}
如果小伙伴对属性的含义有疑问,可以参考1.权限数据库设计.

UserDetails接口默认有几个方法需要实现,这几个方法中,除了isEnabled返回了正常的enabled之外,其他的方法我都统一返回true,因为我这里的业务逻辑并不涉及到账户的锁定、密码的过期等等,只有账户是否被禁用,因此只处理了isEnabled方法,这一块小伙伴可以根据自己的实际情况来调整。另外,UserDetails中还有一个方法叫做getAuthorities,该方法用来获取当前用户所具有的角色,但是小伙伴也看到了,我的Hr中有一个roles属性用来描述当前用户的角色,因此我的getAuthorities方法的实现如下:

public Collection<? extends GrantedAuthority> getAuthorities() {
List<GrantedAuthority> authorities = new ArrayList<>();
for (Role role : roles) {
authorities.add(new SimpleGrantedAuthority(role.getName()));
}
return authorities;
}
即直接从roles中获取当前用户所具有的角色,构造SimpleGrantedAuthority然后返回即可。

创建好Hr之后,接下来我们需要创建HrService,用来执行登录等操作,HrService需要实现UserDetailsService接口,如下:

@Servicebr/>@Transactional
public class HrService implements UserDetailsService {

@Autowired
HrMapper hrMapper;

@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
    Hr hr = hrMapper.loadUserByUsername(s);
    if (hr == null) {
        throw new UsernameNotFoundException("用户名不对");
    }
    return hr;
}

}
这里最主要是实现了UserDetailsService接口中的loadUserByUsername方法,在执行登录的过程中,这个方法将根据用户名去查找用户,如果用户不存在,则抛出UsernameNotFoundException异常,否则直接将查到的Hr返回。HrMapper用来执行数据库的查询操作,这个不在本系列的介绍范围内,所有涉及到数据库的操作都将只介绍方法的作用。


本文来自 Williamwhc 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_40285302/article/details/82183771?utm_source=copy

猜你喜欢

转载自blog.51cto.com/13982735/2178598