Java 角度前端与Spring后端安全性对话

Java 角度前端与Spring后端安全性对话,java,angular,spring,security,Java,Angular,Spring,Security,我有一个棱角分明的前端,无法接收使用后端服务器中的spring进行身份验证的用户。我确认后端身份验证在本地工作,但在尝试调用getCurrentUser方法时,Angular出现了CORS错误(只返回当前经过身份验证的用户)。如何解决此CORS错误 我知道我必须在spring中配置CORS,因为它充当我的后端服务器,我的角度前端需要与它对话,以从我的api方法获得结果 您是否尝试在控制器中添加@CrossOrigin(origins=“”)?对于使用spring security的Cors处理,

我有一个棱角分明的前端,无法接收使用后端服务器中的spring进行身份验证的用户。我确认后端身份验证在本地工作,但在尝试调用getCurrentUser方法时,Angular出现了CORS错误(只返回当前经过身份验证的用户)。如何解决此CORS错误


我知道我必须在spring中配置CORS,因为它充当我的后端服务器,我的角度前端需要与它对话,以从我的api方法获得结果

您是否尝试在控制器中添加@CrossOrigin(origins=“”)?

对于使用spring security的Cors处理,您的类中应该有一个扩展
WebSecurityConfigureAdapter
CORSCOConfiguration Source
,如下所示

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        final CorsConfiguration configuration = new CorsConfiguration();
        configuration.applyPermitDefaultValues();
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
至于如何识别经过身份验证的用户,您很可能希望Spring中有一个返回登录状态的控制器。记住也要在这个方法上启用cors

  @CrossOrigin
  @RequestMapping(value = "/login", method = RequestMethod.GET)
  public String login(Model model, String error, String logout) {
    if (error != null) {
      model.addAttribute("error", "Your username and password is invalid.");
    }

    if (logout != null) {
      model.addAttribute("message", "You have been logged out successfully.");
    }

    return "login";
  }

希望这有帮助。

这能回答您的问题吗?您是否尝试过为正确的CORS操作配置Spring?我相信CORS配置应该在Spring中进行,而不是在角度上。当尝试使用Angular访问我的后端服务器时,即当我收到Cors错误时,我将在何处添加此错误?您可以在声明控制器的位置添加此错误,与添加@controller注释的位置相同。Cors配置正是我要找的!我已经有了一个用于spring security的控制器,但我喜欢你介绍的这个控制器有多简单。谢谢