超管同样是存在user表里的,但是需要在项目启动的时候在创建超管,不能定死user的相关字段的默认值:
所以有一下写法(user实体类给该有的字段不再赘述)
@Component
public class InnerUserInitializer { @Autowired
private IUserService userService;
@PostConstruct
public void initialize() throws Exception {
String salt = UUID.randomUUID().toString();
// getEncryptPsw 设计盐值加密
String password = UserUtils.getEncryptPsw("trsadmin", salt);
createUser("admin", password, salt);
} /**
* 创建超管用户
*
* @param userName
* @param password
* @param salt
*/
@SuppressWarnings("unused")
private void createUser(String userName, String password, String salt) {
if (userService.findByUserName(userName) == null) {
User user = new User();
user.setUserName(userName);
user.setDisplayName(userName);
user.setPassword(password);
user.setExpireAt("0");
user.setSalt(salt);
user.setCheckRole(UserUtils.SUPER_ADMIN);
user.setRole(UserUtils.SUPER_ADMIN);
user.setStatus("0");
user.setOrganizationId("trsadminorganizationid");
String add = userService.add(user,false);
}
}
}
@PostConstruct 作用:
【项目启动是生成超管名字和密码】被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。