分两个问题:
>
是否应该将秘密环境变量放入environment.ts
文件中?
process
变量shim已消失。如果使用它,tsc
将抛出一个错误:无法找到名称'process'
。
关于Q2:如果我使用Heroku来设置我的环境变量,这取决于process
变量。现在,angular6摆脱了process
的补丁,我如何使用Heroku?此外,使用docker-compose通过.env
文件传递环境变量也取决于process
。
如果docker-compose使用.env
文件,就会出现一个新问题:如何将.env文件中的变量传递给angular6环境.ts文件
更新1:
一是没有后端
我使用GitHub API和另一个开放的API,并且有一个名为access_token
的环境变量,如果我把这个放在environment.ts
文件中,并把我的前端源代码推送到GitHub,GitHub会检测到秘密信息并给我一个警告,他们说:
您不应该将GitHub访问令牌放在您的源代码中并将其推送给repo,这样他们就会撤销我的访问令牌。
所以我想使用process.env.access_token
,但是process
变量shim在Angular6
中不见了,我该如何解决这个问题呢?我应该将environment.ts
文件添加到.gitignore
文件中还是什么?
更新2
这是另一个案例
继续更新%1。现在,我添加docker-compose.yaml
和dockerfile
来在docker
容器中运行我的前端应用程序。
以下是工作流程:
运行docker-compose up
在docker
容器中运行我的应用程序。
我认为这个工作流程是扎实的。不需要后端服务,.env
和.gitignore
中的秘密环境变量包含.env
文件,因此不会将其推送到Github repo。
但是,关键是process
shim没有了。我无法通过process
获取环境变量。
更新3
我想我的问题集中在前端应用程序开发阶段。我继续用上面的案例来解释。
为生产就绪,工作流程为:
前端登录成功,从后端服务获取access_token
并将其存储在localStorage或cookie中。不需要从process.env
获取access_token
但对于开发阶段,一般情况下前端和后端开发是分离的。所以,前端不应该依赖于后端的服务。
而且我不想一开始就建立整个大系统。
.env
文件。.gitignore
中,不要推送到SCM(Github、GitLab等)TL;博士
您不应将environment.ts
视为类似于process.env
的东西。
名字相似,但行为却完全不同。environment.ts
中的所有设置都将直接转到您的代码中。这就是为什么以任何方式向environments.ts
放入机密都不安全的原因。
导出var=value
导出var=value
类似,但放入.bash_profile
中,并且跨会话持久process.env
,但在某些情况下仍然可以将机密自动发送到某些后端长版本
在客户端应用程序中没有秘密这回事。由于您在浏览器中的代码将能够获得这些变量,每个人都将能够在运行库中获得这些变量。
这意味着,您显式或隐式使用的所有库、用户的浏览器扩展以及任何能够嗅探您/您的用户流量的人--所有这些都将非常容易地获得您的秘密。
对更新的第1部分的答复:
如果access_token
是您(或您的合成用户)的令牌,那么您有两个选项:
对更新的第2部分的答复:
您可以在前端周围构建一个docker,在一个虚拟机内的kubernetes集群中运行它,虚拟机托管在世界上最安全的服务器上,如果您将它作为角度环境变量,它将不会使您的令牌安全,因为公开的东西不可能是秘密的。
您似乎没有理解要点:GitHub给了您一个错误并且不允许推送代码,您应该已经感激它在您的架构中发现了问题。如果你想解决这个问题,那么就使用上面的解决方案。如果您想简单地绕过GitHub的验证,并且不关心安全性,那么只需将令牌字符串分成两部分并将其分开存储,GitHub将无法找到它。
对更新的第3部分的答复:
您可以直接从前端执行GitHub的Oauth2请求。你的每一个用户都应该有一个帐户在那里,这将解决你的所有问题。这实际上与作为解决方案#2提出的相同。
如果使用带后端的解决方案#1,出于开发目的,只需预先设置cookie或使用localstorage.setitem('your-token-here')
。这对于开发来说已经足够了。
我在设置Tomcat和Java环境路径时遇到了这个错误: JAVA\u HOME和JRE\u HOME环境变量均未定义。运行该程序至少需要两个环境变量中的一个。 在用户变量中:我创建了JAVA\u主变量,并将C:\Program Files\JAVA\jdk1.8.0\u 25添加到其路径中。然后对系统变量路径进行了编辑,添加了C:\Program Files\Java\jdk1.8.0\U 25
当使用docker和ASP.NET核心进行开发时,我应该使用用户秘密还是环境变量?我使用的是Visual Studio2017在添加项目时创建的默认docker文件,该文件使用Microsoft/ASPNetCore:1.1,我相信是一个linux映像。 我如何在docker中设置User-secrets/Environment变量,使其在启动时设置,但不包含在源代码中?
问题内容: 使用外壳程序脚本配置其环境的许多Java应用程序都使用JAVA_HOME环境变量来启动Java的正确版本,找到JRE JAR,等等。 在macOS X 10.6中,以下路径似乎对此变量有效 其中一些是到实际当前虚拟机的符号链接(在Java Preference窗格中定义)。 但是应该使用哪一个?或者可以使用其中任何一个? 问题答案: 我只是设置为该命令的输出,该命令应该为您提供Java
在Vaadin 10-14中,我应该将静态文件放在哪里,例如CSS、JavaScript和聚合模板?静态文件(如图像)如何? 此外,如何在Vaadin中导入这些文件?Vaadin 14与npm和Vaadin 10-13与bower之间有差异吗?
当我用它以以下错误停止: 我不是舒尔,但似乎。env文件不支持变量的使用。
问题内容: 我有一个带有PropertyPlaceholderConfigurer的Spring application- context.xml,可以从.properties文件中获取属性的值。主和测试源文件夹具有单独的.properties文件。问题是我需要在.properties文件中使用环境变量。但是当我通过以下方式进行操作时: 我收到以下错误: 而占位符配置器定义为 关于如何使prope