解耦的前端(SPA)和后端:JWT身份验证+持久登录

时间:2019-07-11 21:40:31

标签: node.js angularjs express authentication jwt

在localhost:3000上,我正在托管一个Node / Express应用程序,该应用程序将用户保存在Mongo中。在localhost:8080上,我正在尝试为其托管AngularJS前端SPA。我已经实现了JWT身份验证来保护后端API端点,但是我不想在Authorization标头中发送令牌,因为这不能为我提供持久登录。

通过谷歌搜索,我了解到存储JWT的最佳位置是HttpOnly cookie。对于Postman来说,这很好用,但是Chrome不会在localhost:8080上设置cookie,因为我相信不同的端口都属于不同的域,因此Chrome不会执行我想要的操作,因为这会带来安全漏洞。

我在这里最好的做法是什么?我感觉很困。有没有办法为分离的前端和后端应用程序实现安全的JWT身份验证,并且仍然提供持久登录?即使我放弃JWT,仍然无法跨不同域设置Cookie,不是吗?

2 个答案:

答案 0 :(得分:0)

确保您的协议为https,具有HttpOnlySecure属性的cookie不会包含在普通的http调用中。

答案 1 :(得分:0)

我的问题是由于对我应该如何构建这样的应用程序以及我的体系结构有根本的误解。

我确定该解决方案是常识,并且对许多人来说是显而易见的:)只是为后端API设置一个Node服务器,例如在localhost:3000上,以及为静态服务器提供服务的另一Node服务器页面,在其中选择的前端JavaScript框架(在本例中为AngularJS)被注入以使其成为单页应用。指示第二台服务器代理所有以/api或类似localhost:3000开头的请求。