我使用Spring Security Core Plugin生成了Role,User和UserRole类。我想直接在用户创建过程中设置用户角色。我在User中添加了一个“Role”字段,但不知道我应该在UserRole中设置条目的方式和位置。
还有什么其他方法可以实现,比如重新认证后更新用户角色?
答案 0 :(得分:0)
您应该在创建用户和角色后删除指向用户角色的链接并使用下一个代码:
UserRole.create(user,role,true)
用户创建的用户,角色创建的角色和true表示userRole应使用flush:true创建 祝你好运!
答案 1 :(得分:0)
是的,它的作品!谢谢,这是我在服务中的代码:
public String updateUser(long userId, String username, String password, long roleId){
Object[] args = [messageSource.getMessage('spring.security.ui.login.username',null, null),username];
def user = User.get(userId);
def userTemp = User.findAllByUsername(username);
if(userTemp.isEmpty() || userTemp.get(0).id == userId){
def role = Role.get(roleId);
user.username = username;
user.roleId = roleId;
if (password != ''){
user.password = password;
}
user.save(flush:true);
UserRole.create(user,role,true);
return "<span class='successMessage'><strong>" + messageSource.getMessage("message.common.record.saved.successfully", args, null) + "</strong></span>";
} else {
return "<span class='warnMessage'><strong>" + messageSource.getMessage("message.common.register.exist", args,null) + "</strong></span>";
}
}