2012-09-05 5 views
1

기본적으로 웹 API를 둘러싼 래퍼 인 .net github 프로젝트가 있습니다. 테스트 프로젝트에서 API 키를 사용하여 API를 호출하려고합니다. 이 키를 비공개로 유지해야합니다. 비주얼 스튜디오 프로젝트에서 어떻게해야합니까?오픈 소스 프로젝트에서 개인 정보 숨기기

파이썬과 같은 다른 프로젝트에서는 자식 (config.py)을 무시하고 config.example.py과 같은 것을 사용할 수 있습니다. 그러나 Visual Studio의 경우에는 누락 된 파일 Config.cs으로 인해 프로젝트가 컴파일되지 않습니다. 이것을 해결할 수있는 적절한 방법은 무엇입니까? 나는이 파일을 무시하는 동일한 방법을 사용하여 Config.example.cs에서 Config.cs으로 이름을 변경해야하는 빌드 스크립트를 실행하게 할 생각입니까?

+0

왜 코드 파일에 구성을 저장 하시겠습니까? 데이터 파일은 훨씬 더 좋은 아이디어입니다. – CodesInChaos

답변

6

이는 .config 파일을위한 완벽한입니다. 웹 또는 콘솔 응용 프로그램 여부에 따라 프로젝트에 web.config 또는 app.config 파일이 있습니다.

appSettings 섹션을 사용하여 API 키를 저장할 수 있습니다.

더 쉽게하려면이 섹션을 다른 파일 (예 : specialappsettings.config)에서 읽은 다음 저장소에서 해당 파일 하나만 무시하면됩니다.

<configuration> 
<appSettings file="specialappsettings.config"> 
</appSettings> 
<system.web> 
<!-- standard web settings go here --> 
</system.web> 
</configuration> 

새로운 specialappsettings.config 파일을 만듭니다 :

의 Web.config (또는 의 app.config) 수정

<appSettings> 
<add key="APIKey" value="YourApiKeyValue" /> 
<add key="AnotherKey" value="AnotherValue" /> 
</appSettings> 

이에 액세스 할 수 있습니다 당신의 코드 :

var apiKey = ConfigurationManager.AppSettings["APIKey"]; 

주 : 당신은 원래 웹에서 설정을 유지할 수 있습니다

  • .config 파일을 으로 설정하면됩니다. 그러나이 설정을 사용하면 나머지 프로젝트의 구성 정보에 영향을주지 않고 git 저장소의 특정 설정 파일 만 무시할 수 있습니다.
  • 두 파일 중 하나에 동일한 "키"를 저장할 수 있지만 외부 파일은 원래 web.config 파일 값보다 우선합니다.
+0

그래서 API 키가 어느 것이고 무시할 것입니까? –

+0

위의 코드를 사용하여 별도의 파일 (appsettings.config 만들기)에 API 키와 구체적인 세부 정보를 넣는 것이 좋습니다. git 저장소에서'appsettings.config' 파일을 무시하십시오. web.config 파일을 실행해야하기 때문에 나머지 응용 프로그램이 제대로 작동 할 수 있지만 이와 같은 구체적인 정보는 없습니다. –

-1

아마도 Config.cs 파일 외부에 키를 저장하고 런타임에로드 할 수 있습니다.

보너스, 코드를 사용하는 다른 사람들은 프로젝트를 다시 컴파일하여 API 키를 변경하지 않아도됩니다.

1

아마도 프로젝트에 대해 App.config 파일을 찾고있을 것입니다. 컴파일 할 때 <application>.exe.config에 복사됩니다. 사용자는 필요에 따라 해당 구성 파일을 편집 할 수 있습니다. 그 설정 파일에서

, 당신은 당신의 API 키를 추가 할 수 있습니다

<configuration> 
    <appSettings> 
     <add key="APIKey" value="12345"/> 
    </appSettings> 
</configuration> 

그런 다음 당신은 당신의 코드에서 액세스 할 수 ConfigurationManager.AppSettings를 사용하여 :

string apiKey = ConfigurationManager.AppSettings["APIKey"]; 
1

하나의 옵션은 대신 .config 파일을 사용하는 것입니다 소스에 하드 코딩 된 비밀 키를 갖는 것.

더 많은 정보 Using Settings in C#step-by-step guide

<configuration> 
    <appSettings> 
     <add key="SecretKey" value="0" /> 
    </appSettings> 
</configuration> 


var secretKey = ConfigurationManager.AppSettings.Get("SecretKey"); 
관련 문제