我已经使用Java(spring boot)和angular生成了一个jhipster项目,我想将angular用于管理模块,它管理站点的所有内容,并在前端使用java和在后端使用java。主页使用rest模板显示内容,我需要在admin模块和主页之间使用相同的身份验证。当我登录到管理模块,然后返回首页时,登录用户的名称将显示在首页中,但无法在首页中获得登录用户的身份验证
@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());
}
请给我一些如何在主页上进行身份验证的想法。
答案 0 :(得分:1)
这里的关键点是您正在使用两种前端技术:Angular(由JHipster生成的管理单页应用程序)和带有Thymeleaf的Spring MVC,它们的工作方式完全不同。
您在JHipster中选择的JWT身份验证类型要求前端通过HTTP标头提供身份验证令牌。在生成的angular应用程序中,通过身份验证后,令牌将由javascript代码存储在浏览器LocalStorage中,然后令牌由angular app作为HTTP标头添加到每个后端请求。
当浏览器请求您的Spring MVC主页时,没有javascript代码将令牌添加到请求中,因此后端说这是一个匿名请求。
您可以尝试以下两种选择之一: