我正在使用"github.com/dgrijalva/jwt-go"创建JSON令牌。
当我在本地托管服务器时,我可以像往常一样使用我的私钥。但是在GAE中,它不能工作,因为我没有访问文件系统的权限。
你们会怎么做?将密钥存储在数据存储或任何其他想法中?
谢谢
编辑:
我的app.yaml看起来如下( api_version和其他东西下面):
handlers:
- url: /.*
script: _go_app发布于 2016-01-06 10:01:06
在AppEngine上,您无法访问主机操作系统的文件系统,但您可以访问web应用程序的文件(您拥有只读权限,不能更改它们,也不能在应用程序的文件夹中创建新文件)。
因此,问题是:您想在不重新部署应用程序的情况下从应用程序中更改这个私钥吗?或者,如果它是“静态地”部署在应用程序的代码中,那么它是非常好的吗?
如果你不需要改变它(或者只是当你重新部署你的应用程序时),最简单的方法就是把它作为一个“静态”文件存储在你的webapp中。您可以使用相对路径引用应用程序的文件,其中当前或工作目录是应用程序的根目录。例如,如果应用程序在根目录中包含一个key文件夹( app.yaml驻留的位置),并且在key文件夹中有一个my_key.txt文件,则可以使用路径:key/my_key.txt引用它。
实际上,在应用程序的代码中“发布”静态文件是很常见的:只需考虑由Go代码(例如包html/template)读取和处理的HTML模板,就可以生成HTML结果;HTML模板文件的内容并不直接提供给客户端。
如果您需要不时地更改它而不必重新部署您的应用程序,那么将其存储在您的应用程序可以读取和修改的Datastore中。
注:
一个重要的注意事项:并不是每个文件都可以通过代码读取,这取决于应用程序的配置。引用使用app.yaml /静态文件处理程序进行配置
静态文件是为给定的URL直接向用户提供的文件,例如图像、CSS样式表或JavaScript源文件。静态文件处理程序描述应用程序目录中的哪些文件是静态文件,以及哪些URL为它们服务。 为了提高效率,App将静态文件与应用程序文件分开存储和服务。静态文件在应用程序的文件系统中不可用。如果您有需要由应用程序代码读取的数据文件,则数据文件必须是应用程序文件,并且不能与静态文件模式相匹配。 静态文件处理程序可以通过两种方式定义:一种是映射到URL路径的静态文件的目录结构,另一种是将URL映射到特定文件的模式。
阅读如何正确配置应用程序和静态文件/目录的链接。
发布于 2016-01-07 11:11:48
解决办法是让app.yaml保持原样。在项目中将app.yaml放在根lvl上。然后将从GOPATH开始的所有导入更改为从项目根开始。让我选择将app.yaml和main文件放在项目根下的另一个文件夹中的问题是双重导入造成的。为了更好的理解,请阅读以下内容:Google在服务/测试时导入和冲突
解决方案让我的项目找到了我想要的文件。
https://stackoverflow.com/questions/34629056
复制相似问题