jhipster使用RESTAPI和rest模板进行相同的身份验证
我已经使用java(spring boot)和angular生成了一个jhipster项目,我想使用angular作为管理模块,它管理站点的所有内容,并在前端使用angular,在后端使用java。主页使用rest模板来显示内容,我需要在管理模块和主页之间使用相同的身份验证。当我在管理模块中登录,然后返回主页时,登录用户的名称将显示在主页中,但我无法在主页中获得登录用户的身份验证jhipster使用RESTAPI和rest模板进行相同的身份验证,jhipster,Jhipster,我已经使用java(spring boot)和angular生成了一个jhipster项目,我想使用angular作为管理模块,它管理站点的所有内容,并在前端使用angular,在后端使用java。主页使用rest模板来显示内容,我需要在管理模块和主页之间使用相同的身份验证。当我在管理模块中登录,然后返回主页时,登录用户的名称将显示在主页中,但我无法在主页中获得登录用户的身份验证 在RESTAPI中,当获取登录用户时,我将使用SecurityUtils.isAuthenticated()进行如下
请给我一些如何在主页中获得身份验证的想法。这里的关键点是,您正在使用两种前端技术:Angular(JHipster生成的管理单页应用程序)和Spring MVC与Thymeleaf,它们的工作方式完全不同 您在JHipster中选择的JWT身份验证类型要求前端通过HTTP头提供身份验证令牌。在生成的angular应用程序中,经过身份验证后,令牌由javascript代码存储在浏览器LocalStorage中,然后angular应用程序将令牌作为HTTP头添加到每个后端请求中 当浏览器请求SpringMVC主页时,没有javascript代码将令牌添加到请求中,因此后端表示这是一个匿名请求 您可以尝试以下两种选择之一:
- 将您的主页作为Angular应用程序编写,并重新使用生成的管理部分中的一些组件和服务
- 重新生成会话身份验证类型的应用程序,因为它使用cookie进行身份验证,并通过浏览器自动发送到后端
@Override
public ResponseEntity<?> getSalesProduct() {
if (SecurityUtils.isAuthenticated()) {
User user = userRepository.findOneByLogin(SecurityUtils.getCurrentUserLogin().get()).get();
}
@GetMapping("/profile")
public ModelAndView profile() {
if (SecurityUtils.isAuthenticated()) {
User user = userRepository.findOneByLogin(SecurityUtils.getCurrentUserLogin().get());
}