Django和Node处理同一个域

时间:2017-04-06 11:26:14

标签: node.js django python-2.7 oauth-2.0 nodes

嗨,我有两个过程

  1. Django和MYSQL
  2. node / express和mongo db。
  3. 1

    如何配置这两个进程以指向不同的URL 喜欢。 Django指向api.abc.com/v1,节点指向api.abc.com/v2?

    2

    我的所有用户登录都在Django和MYSQL中使用OAuth。我可以在Django中验证用户身份。

    但是如何使用Django REST OAuth发送的令牌在nodejs app中验证用户?

    感谢。

2 个答案:

答案 0 :(得分:1)

情景A

您在django ^v2/.*$中创建了一个网址,然后从django视图向node.js进程发出请求。这样django可以处理用户身份验证和权限,节点可以是独立的,不知道有关用户身份验证的任何信息。如果您需要用户数据(id或其他),您可以将其作为标题或cookie注入请求中。

情景B 您将深入研究django REST OAuth实现,找到在db中存储令牌的位置,并在每个请求中从头/ cookie中获取oauth令牌,并将其与DB中的那个进行比较。您必须将nginx设置为反向代理,并将网址/v1/.*$上的所有流量路由到django应用,并将所有流量转发到/v2/.*/到节点应用。< / p>

这两个选项都可行,但我建议场景A 。它更容易,更快速,更不容易出错。

答案 1 :(得分:1)

你可以通过几种方式实现,但最方便的方法是使用像nginx这样的反向代理。

为您的Node应用程序配置反向代理并为Django应用程序执行完全相同的操作,这将使您可以轻松地在相同的域名和端口号上获得所需的路由,只是在不同的路径中。

另一种选择是将请求从Node应用程序代理到Django应用程序,或者相反,但这需要更改您的应用程序,而不是仅仅将代理放在它们面前。

以下是有关如何使用nginx,Apache甚至Microsoft IIS为Node配置反向代理的onfo的一些问题: