若依框架注册新用户,且赋角色,
若依官网
1、如何开启注册功能
- 开启前端注册开关。不管使用下那种方式开启注册功能,首先,先在前端里面views下找到login.vue,将启注册开关先给设置为true,保存重启即可。如下图
2、两种开启新增用户的方法
-
使用数据库开启,在数据库找到sys_config表打开,如下图,将config_key为sys.account.registerUser的config_value的值改为true刷新即可
-
或者通过web端开启当然本质上都是从数据库开启,如图,找到系统管理/参数设置,找到用户注册,点击修改,将参数键值从false改为true刷新即可,
2、在用户创建的时候给用户分配角色
无论那个方式,其都是向user提供了一个角色id使其向用户和角色关联表插入一条数据,只要保证你提供的角色id无误即可。
方式1 (不推荐)
我这里使用了比较简单的方法,这里我的思路是当用户被创建时,对sys_user_role表做操作,增加用户id和角色id(角色提前要配置好(在用户管理配置)),这样只是固定角色(新注册的用户的角色都一样,比如说都为普通用户)。
我的xml文件(我这里让新注册的用户角色都为2)然后再在实现层SysUserServiceImpl.java中在registerUser方法中调用新增角色方法即可完成。
方式2
改动比较小的方式。(角色提前要配置好,需要用到角色id)
进入insertUserRole方法,该方法就是进行角色关联。
在insertUserRole方法中新增默认固定角色。这样新增的用户就拥有了你这个固定的角色。
/**
* 新增用户角色信息
*
* @param user 用户对象
*/
public void insertUserRole(SysUser user)
{
Long[] roles = user.getRoleIds();
// 假如你新增的用户要赋予的角色id为2,
if (roles.length < 1){
roles = new Long[]{2L};
}
// if (StringUtils.isNotNull(roles))
// {
// 新增用户与角色管理
List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long roleId : roles)
{
SysUserRole ur = new SysUserRole();
ur.setUserId(user.getUserId());
ur.setRoleId(roleId);
list.add(ur);
}
if (list.size() > 0)
{
userRoleMapper.batchUserRole(list);
}
// }
}
方式3 (推荐)
直接在insertUser方法中加入。同样(角色提前要配置好,需要用到角色id 示例id为2),加入user.setRoleIds()即可完成。
/**
* 新增保存用户信息
*
* @param user 用户信息
* @return 结果
*/
@Override
@Transactional
public int insertUser(SysUser user)
{
// 新增用户信息
int rows = userMapper.insertUser(user);
// 新增用户岗位关联
insertUserPost(user);
// 新增用户与角色管理
user.setRoleIds(new Long[]{2L});
insertUserRole(user);
return rows;
}