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

时间:2017-03-20 21:44:08

标签: javascript angular heroku

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

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

我为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[]> { ...}
 }

1 个答案:

答案 0 :(得分:2)

编程观点

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

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

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

安全观点

如果第三方服务需要密码凭证,则可以从服务器端更好地处理此类呼叫,如下所示:

(浏览器) - api call - &gt; (您的服务器) - api通话 - &gt; (第三方)

这样就不会暴露第三方的凭证。并且api对您的服务器的调用应该受到一些身份验证机制的保护。

相关问题