在jhipster中设置新的默认角色

时间:2017-02-02 14:25:13

标签: spring-security jhipster

如何在jhipster中设置默认角色? (使用angularjs和spring)。

我自己解释

在注册页面中我想指定注册用户的角色。让我们说一个复选框或一个列表。 (例如人和动物)

我怎样才能在角度控制器和弹簧中做到这一点?

我现在能做什么?

我在数据库中以角度添加了我需要的角色,我只能通过管理员的用户管理页面为新注册用户指定角色。

1 个答案:

答案 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的角度服务。

我希望我的简短回答可以帮助您找到合适的地方!如果你卡住了,请随意在评论中提问