Angular 2,Spring boot,spring security,登录表单

6

我有一个前端应用程序,运行在http:// localhost:4200上,使用Angular 2(我使用angular-cli生成项目)。

该应用程序可以正常运行(我可以使用Angular 2 Http服务从/到数据库获取和发布信息:

getList () {
    return this._http.get("http:// localhost:8080/").map(res => res.json());
}

另一方面,我有一个后端应用正在运行,使用Spring Boot在http://localhost:8080/上提供REST API服务,为我的Angular 2应用程序提供支持。从http://localhost:4200/发送请求到http://localhost:8080/可以正常工作。
之前,我用Spring框架和AngularJS 1编写过应用程序,Spring安全性在同一应用程序(Maven项目)中处理登录和安全性。
现在,我有两个独立的应用程序通过HTTP进行通信(使用Spring Boot RESTful API作为后端API,使用Angular 2作为前端API)。
我该如何设置登录表单,将其放置在哪里,以及如何配置Spring安全性与我的Angular 2应用程序?

你自己有过任何研究吗?试着添加你的结果,而不是纯粹地提问。 - Reyraa
我尝试从Angular发送表单到REST服务并将其存储,但当页面重新加载时,我需要重复输入凭据。 - Mouloudi Hicham
1个回答

3
当你使用Angular CLI启动Angular应用程序时,你的Angular页面由NodeJS在后端提供服务。你有几个选择。
  1. 可以在Nodejs服务器上处理登录,然后调用Spring Boot应用程序进行身份验证和授权。(我认为,你可能需要一些调整,比如使用express服务器代替lite服务器。请看这里:https://stackoverflow.com/a/37561973/6785908
  2. 开发初期后,可以将AngularJS资源复制到Spring MVC(Spring Boot)服务器中,并使用它来提供页面(以及其余API),就像以前做的一样。
  3. 让Angular应用程序调用Spring Boot服务(我猜你正在使用$http.post提交表单,如果是这种情况,你只需更改URL,使其能够命中spring boot应用程序即可)。对于生产部署,请使用nginx/httpd来提供静态文件(AngularJS/CSS等),并将所有动态请求路由/代理到spring boot应用程序中。
我强烈建议采用第三种选择。

嗨,我也在这个问题上苦苦挣扎,虽然我对Spring还很陌生。在您的第三个选项中,当您建议更改URL以命中Spring Boot应用程序时,您能否澄清这与OP的代码示例有何不同?他的URL似乎指向Spring Boot应用程序。我的应用程序(实际上是一个Angular应用程序+一个Spring应用程序)在没有Spring安全性的情况下正常运行,但是当我将用户凭据发布到Spring安全性的默认/ login URL时,我收到“请求方法'POST'不受支持”的消息,我的理解是您必须发布它。谢谢 - Shane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接