扩展Jhipster JWT(Spring)单片应用程序以支持模拟



我已经生成了一个使用JWT身份验证的jhipster angular/java应用程序。

我现在想扩展应用程序以支持模拟

我对实现以下目标感兴趣:

  • 管理员模拟:允许管理员用户作为任何其他用户登录

  • 授予用户的模拟:允许另一个被授予模拟用户(由用户自身授予(权限的用户以其他用户身份登录。

  • 审核-记录更改(审核功能(-审核跟踪必须能够区分实际用户和模拟用户,并将其记录在审核跟踪中。

我看到Spring支持模拟,但考虑到使用了JWT,我不清楚如何在Jhipster应用程序中正确实现它。我不确定Spring路线是否适合JHipster JWT Monolith应用程序——我认为这不是正确的方法。

虽然还有一些关于其他帖子的不完整信息,但经过广泛的搜索,我找不到一个可以提供明确的分步指导的帖子。如果有人能为我做这件事,我将不胜感激。我希望其他人也会觉得这样的答案非常有用。

提前谢谢。Fergal

您只需要在UserJwtController.java 中添加以下方法

@PostMapping("/authenticate-externalnodes")
public ResponseEntity<JWTToken> authenticateExternalnodes(@Valid @RequestBody LoginVM loginVM) {
// Get Roles for user via username
Set<Authority> authorities = userService.getUserWithAuthoritiesByLogin(loginVM.getUsername()).get()
.getAuthorities();
// Create Granted Authority Rules
Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
for (Authority authority : authorities) {
grantedAuthorities.add(new SimpleGrantedAuthority(authority.getName()));
}
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
loginVM.getUsername(), "", grantedAuthorities);
Authentication authentication = authenticationToken;
SecurityContextHolder.getContext().setAuthentication(authentication);
boolean rememberMe = (loginVM.isRememberMe() == null) ? false : loginVM.isRememberMe();
String jwt = tokenProvider.createToken(authentication, rememberMe);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add(JWTFilter.AUTHORIZATION_HEADER, "Bearer " + jwt);
return new ResponseEntity<>(new JWTToken(jwt), httpHeaders, HttpStatus.OK);
}

最新更新