与Express私人路线反应

我主要使用服务器端渲染解决scheme将数据从服务器传递到客户端,并在浏览器中渲染。

这样做的一些主要好处包括能够获取数据并将其传递给客户端,而不会暴露公开的路由。 所以能够保持隐藏的数据,只有当我想要的时候才暴露。 我知道Facebook等其他应用程序只能通过其应用程序(iOS,Android,Web应用程序)接收数据,例如时间线数据不是公共路线,只能由自己的应用程序接收。

我如何使用React来实现这样的事情? 使用服务器端渲染,我可以locking这些函数/路由,只允许从后端代码调用它们,而不是暴露它们,我也可以做一些事情,比如检查以确保用户login等等。

我怎样才能实现这个与React?

       

网上收集的解决方案 "与Express私人路线反应"

据我所知,你想限制某些路线login用户。

对于像Facebook这样的身份提供者login,goto是passport.js。 有关使用反应/快递/护照的问题已经在SO上面提出过了,例如这里 。

编辑回应评论:

所以,你有一些输出数据的function。 如果您渲染服务器端,这些function不会暴露。 但是,如果你通过API暴露他们…他们是暴露的。 而且,由于JavaScript代码被发送到客户端,因此您不能只将头部秘密放在头部,因为您必须将该秘密发送给客户端。

我上面说的是,如果您限制这些API login用户,那么问题就可以通过OAuth和/或JWT来解决。 JWTs coukd也为您工作,无需login。

但是,如果你想要做的就是把API的请求留给你的应用程序,无论用户是否login,我不知道任何完美的解决scheme,只是一些技巧:

  • 使用HTTPS
  • 设置CORS政策只允许您的域名
  • 使用像头盔一样的包裹

还有一件事值得我注意,我没有用过,但看起来不错的是Microgateway

这通常使用authentication/授权的不同概念来解决,例如在OAuth2协议中定义的。

让我在非常高和抽象的层面上描述这一点:

你可以说有不同的客户访问你的API。 API可以定义哪个客户端可以访问哪个路由。 每个客户端都有一个客户端ID和一个客户端密钥,用于向身份validation服务器标识自己,并根据令牌交换ID和密码。 这个令牌(例如Json Web Token)对这个客户端的权限进行编码,例如在你的API中可以访问某些路由,而不是其他的路由。

但是,你必须考虑到,没有纯粹的networking应用程序是100%安全的,也就是说,在纯Web应用程序中,没有任何方法可以100%确定地保护上述客户机密。 为此,您还应该使用密码等来实现另一个身份validationstream程。否则,您还必须实现某种服务器端代理,以保证服务器端的安全,并将令牌返回给客户。

如果您要在第三方API中限制访问权限,则需要在两者之间放置一个代理或API网关,以执行上述的访问控制。 所以这意味着可以用这种方式访问​​的路由不应该泄露任何敏感数据,如用户数据。

我希望这些想法能以某种方式帮助你为你的问题find合适的架构。