我目前正在做一个rails项目,该项目将部署在大型企业的内部网络上。它仅供内部使用。但是,此项目的功能要求之一是外部非用户可以接收带有 URL/令牌的电子邮件,该 url/令牌将他们带到一个表单,以便从网络外部向应用程序的数据库提供信息。解决这个问题的最好方法是什么,或者甚至有可能吗?
如果希望应用仅是内部应用,则应在同一网络中创建另一个具有外部可见性的应用,并且可以在两者之间与内部应用进行通信,可能通过 API。
希望这能给你一些想法。
应该可以从 Rails 项目中限制对任何给定路由或控制器操作的访问(Rack 请求对象包含生成请求的 IP),但更好的方法是利用反向代理中的功能。 如果您使用的是nginx,请参阅此页面。 你应该能够在你的nginx.conf中设置这样的东西:
location / {
allow 192.168.1.1/24; # or whatever IP range you want to permit through
allow 127.0.0.1; # for local development
deny all; # block everyone else
... # the reset of your app config
}
location /path-to-external-form {
allow all;
}
当然,建立一个单独的应用程序并共享一个数据库可能会更容易。