如何在jhipster中设置默认角色? (使用angularjs和spring)。
我自己解释
在注册页面中我想指定注册用户的角色。让我们说一个复选框或一个列表。 (例如人和动物)
我怎样才能在角度控制器和弹簧中做到这一点?
我现在能做什么?
我在数据库中以角度添加了我需要的角色,我只能通过管理员的用户管理页面为新注册用户指定角色。
答案 0 :(得分:1)
要做到这一点还有一些工作要做,所以我会用一些小样品粘贴正确的部分..
通常,您必须扩展API以了解角色选择,因此可以显式提供此信息。然后根据需要更改angularJS前端。
通过将ManagedUserVM
发布到/api/account/register
来进行注册,因此首先要告诉AccountResource.registerAccount(...)
将一组字符串(您的角色)作为附加参数传递给{{ 1}}
userService.createUser
然后在@Timed
public ResponseEntity registerAccount(@Valid @RequestBody ManagedUserVM managedUserVM) {
HttpHeaders textPlainHeaders = new HttpHeaders();
///...
User user = userService
.createUser(managedUserVM.getLogin(),
managedUserVM.getPassword(),
managedUserVM.getFirstName(),
managedUserVM.getLastName(),
managedUserVM.getEmail().toLowerCase(),
managedUserVM.getImageUrl(),
managedUserVM.getLangKey(),
//add authorities here
managedUserVM.getAuthorities()
);
mailService.sendActivationEmail(user);
//...
}
中,您应用该集并在保存之前将其添加给用户,方法是将UserService.createUser
添加到其参数中并
Set<String> authorities
这应该足以将权限传递给 if (authorities != null) {
Set<Authority> authorities = new HashSet<>();
authorities.forEach(
authority -> authorities.add(authorityRepository.findOne(authority))
);
user.setAuthorities(authorities);
}
并保存它们。您应该知道用户禁止使用ADMIN角色注册自己,但安全考虑因素取决于您而不是我的答案。
现在知道你的API也可以处理权限,你可以传递它们。
您只需添加一些复选框或选择框/api/register/
至ng-model="vm.registerAccount.authorities"
(如果为angularJS1)或
src/main/webapp/app/account/register/register.html
src / main / webapp / app / account / register / register.component.html`(如果是angular2)。
AFAIK这应该自动引导将这些权限/角色传递给API的角度服务。
我希望我的简短回答可以帮助您找到合适的地方!如果你卡住了,请随意在评论中提问