jhipster使用RESTAPI和rest模板进行相同的身份验证

jhipster使用RESTAPI和rest模板进行相同的身份验证,jhipster,Jhipster,我已经使用java(spring boot)和angular生成了一个jhipster项目,我想使用angular作为管理模块,它管理站点的所有内容,并在前端使用angular,在后端使用java。主页使用rest模板来显示内容,我需要在管理模块和主页之间使用相同的身份验证。当我在管理模块中登录,然后返回主页时,登录用户的名称将显示在主页中,但我无法在主页中获得登录用户的身份验证 在RESTAPI中,当获取登录用户时,我将使用SecurityUtils.isAuthenticated()进行如下

我已经使用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进行身份验证,并通过浏览器自动发送到后端

    谢谢@GaëlMarziou我编辑了我的问题,我使用了Jhipster为主页生成的SecurityUtils我不确定你所说的“主页使用rest模板显示内容”是什么意思。从使用ModelAndView提取的代码中,我猜您使用的是SpringMVC视图模板。您使用哪个模板引擎?Thymeleaf,Freemarker?谢谢@GaëlMarziou,我用的是Thymeleaf。在此之前和之后,我必须获取登录用户,我将向Thymeleaf中填充数据,但由于SecurityUtils,我无法获取用户登录信息。isAuthenticated()始终为falseOK,因此有两种不同的前端方法。您在JHipster中选择了哪种身份验证类型:JWT,session,…?谢谢@GaëlMarziou,我在我的项目中使用JWT身份验证谢谢@Gaël Marziou我将继续使用您的方法
    @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());
         }