Javascript 角度2环境变量-设置基本身份验证密码

Javascript 角度2环境变量-设置基本身份验证密码,javascript,angular,heroku,Javascript,Angular,Heroku,我使用sails.js编写了一个非常简单的服务。它使用基本身份验证来访问其服务 我还有一个单独的前端,使用@Angular/cli以Angular编写 我要为prod和dev设置两组环境变量。例如: // dev ADMIN=admin ADMIN_PASS=mypassword123 API_ENDPOINT=http://localhost:1337/endpoint 这对于prod来说显然是不同的。我的问题是我正在使用Heroku部署它。您可以在heroku中轻松设置环境变量,但我不知道

我使用sails.js编写了一个非常简单的服务。它使用基本身份验证来访问其服务

我还有一个单独的前端,使用@Angular/cli以Angular编写

我要为prod和dev设置两组环境变量。例如:

// dev
ADMIN=admin
ADMIN_PASS=mypassword123
API_ENDPOINT=http://localhost:1337/endpoint
这对于prod来说显然是不同的。我的问题是我正在使用Heroku部署它。您可以在heroku中轻松设置环境变量,但我不知道如何访问它们。我知道您可以在
src/environments
中进行设置,但这会将我的变量置于代码控制中

我也尝试过
process.env
,但我了解到这是一个node.js的东西,而不是角度的东西

如何从angular2访问系统环境变量?

我如何向我们介绍它的示例:

 @Injectable()
 export class HeroService {
   private heroesUrl = 'api/heroes';  // <- this should be grabbed from environment
   private adminUser = 'admin'; // this line too...
   private adminPass = 'myPassword'; // same with this line... 
   constructor (private http: Http) {}
   getHeroes(): Observable<Hero[]> { ...}
 }
@Injectable()
导出类服务{
private heroesUrl='api/heroes';//编程角度
使用
process.env
,然后服务器端(nodejs)可以将它们放入一个结构中。由于您使用的是
sails.js
,请设置一个
post
路由或一个api调用,以json格式发送此结构

前端(浏览器)应用程序可以在运行时进行http.post调用以获取它

这样,参数集就不会捆绑/硬编码到前端应用程序代码库中

安全观点 如果第三方服务需要密码凭据,则最好从服务器端处理此类呼叫,如下所示:

(浏览器)--api调用-->(您的服务器)--api调用-->(第三方)

这样就不会向第三方公开凭据。对服务器的api调用应该受到某种身份验证机制的保护。

编程角度 使用
process.env
,然后服务器端(nodejs)可以将它们放入一个结构中。由于您使用的是
sails.js
,请设置一个
post
路由或一个api调用,以json格式发送此结构

前端(浏览器)应用程序可以在运行时进行http.post调用以获取它

这样,参数集就不会捆绑/硬编码到前端应用程序代码库中

安全观点 如果第三方服务需要密码凭据,则最好从服务器端处理此类呼叫,如下所示:

(浏览器)--api调用-->(您的服务器)--api调用-->(第三方)



这样,对第三方的凭据就不会公开。对服务器的api调用应该受到某种身份验证机制的保护。

那么,您是想在部署期间还是在运行应用程序时访问这些变量?我的想法是两者都是?比如,我将有一个
服务/something.js,
将使用上面的值。当你想向每个客户端显示公共的身份验证数据时,为什么要保护你的API?我不知道。这是一个应用程序到另一个应用程序的通信。那么你想在部署期间还是在运行应用程序时访问这些变量?我的想法是两者都要?比如,我将有一个
服务/something.js,
将进行调用s使用上述值连接到某个api终结点。当您希望向每个客户端显示公用的身份验证数据时,为什么要保护您的api?我没有。这是从一个应用程序到另一个应用程序的通信。我如何访问angular中的api?angular正在浏览器(客户端)中运行您绝对不想让这些变量对客户端可见(假设它们应该保密)这不会将我的VAR暴露给发出post呼叫的人吗?@jeff我正试图从纯编程pov解决问题。出于安全考虑更新了答案。@jeff这能回答您的问题吗?我如何访问angular中的VAR?angular正在浏览器(客户端)中运行你绝对不想让这个变量对客户端可见(假设它们应该保密),这会不会让我的变量暴露给打电话的人?@jeff我试图从纯编程pov解决这个问题。出于安全考虑更新了答案。@jeff这能回答你的问题吗?