2015-06-03 8 views
6

के लिए मान छुपाने का सबसे अच्छा तरीका मैं अपने एमवीसी अनुप्रयोग में एक रेडिस कैश सत्र राज्य प्रदाता का उपयोग कर रहा हूं। बेशक, प्रदाता के लिए सभी सेटिंग्स मेरे web.config में हैं। एप्लिकेशन अगर मैं बस होस्ट और कुंजी और के रूप में सरल तार में सब डाल काम करता है, तो यह इस तरह दिखता है:सत्रस्टेट प्रदाता

<sessionState mode="Custom" customProvider="MySessionStateStore"> 
     <providers> 
      <add 
      type="Microsoft.Web.Redis.RedisSessionStateProvider" 
      name="MySessionStateStore" 
      host = "[HOST]" 
      port = "6379" 
      accessKey = "[KEY]" 
      ssl = "false" 
      throwOnError = "true" 
      retryTimeoutInMilliseconds = "5000" 
      databaseId = "0" 
      applicationName = "TRAXProSurvey" 
      connectionTimeoutInMilliseconds = "5000" 
      operationTimeoutInMilliseconds = "1000" 
      /> 
     </providers> 
    </sessionState> 

... जहां "[host]" और "[KEY]" के बजाय कर रहे हैं वास्तविक मूल्य लेकिन यह बिल्कुल सुरक्षित नहीं है, है ना? क्या किसी भी तरह से उस जानकारी को छिपाने का कोई तरीका है?

मुझे Azure कॉन्फ़िगरेशन में ऐप सेटिंग्स के उपयोग के बारे में पता है - असल में मैं किसी और चीज़ के लिए एक जोड़े का उपयोग कर रहा हूं। लेकिन मुझे विशेष रूप से उन लोगों का उपयोग करने में सक्षम होने का कोई तरीका नहीं मिल रहा है। मैं ऐप सेटिंग वैरिएबल बना सकता हूं, लेकिन sessionState के भीतर उस मान को एक्सेस करने का तरीका क्या है ?? मैंने System.Configuration.ConfigurationManager.AppSettings ("[name]") का उपयोग करने का प्रयास किया - बस यही है, उद्धरण के साथ, और वह एकल उद्धरण के साथ।

मैं शायद सोचा मैं सिर्फ Web.config एन्क्रिप्ट .... मैंने पाया कि आप "< 'MSDeployEnableWebConfigEncryptRule'> सच < '/ MSDeployEnableWebConfigEncryptRule'>" .pubxml में (कोई एकल उद्धरण के साथ) जोड़ सकते हैं - लेकिन यह नियमित Azure वेबसाइटों के लिए काम नहीं करता है।

मुझे एस्पनेट_रेगिस का उपयोग करके Web.config के अनुभागों को एन्क्रिप्ट करने के लिए लेख/उदाहरण भी मिले .... लेकिन ऐसा करने से एज़ूर जैसे वेब फार्म वातावरण में काम नहीं होगा, है ना?

तो क्या अन्य विकल्प (यदि कोई हैं) हैं? ... या यह सिर्फ संभव नहीं है? धन्यवाद!

उत्तर

4

आप नीचे की तरह Redis सत्र स्थिति कॉन्फ़िगरेशन प्रदान करने के लिए ऐप सेटिंग्स का उपयोग कर सकते हैं।

उदाहरण के तौर पर हम ऐप सेटिंग्स में होस्ट और एक्सेसकी सेट करना चाहते हैं।

<appSettings> 
    <add key="SomeHostKey" value="actual host value" /> 
    <add key="SomeAccessKey" value="actual access key" /> 
</appSettings> 

आप ऐप सेटिंग्स के अंदर 'कुंजी' के रूप में कोई स्ट्रिंग चुन सकते हैं। आप एज़ूर पोर्टल से ऐप सेटिंग सेट कर सकते हैं।

अब, नीचे की तरह web.config में मूल्य के रूप में इस कुंजी का उपयोग:

<sessionState mode="Custom" customProvider="MySessionStateStore"> 
     <providers> 
      <add 
      type="Microsoft.Web.Redis.RedisSessionStateProvider" 
      name="MySessionStateStore" 
      host = "SomeHostKey" 
      port = "6379" 
      accessKey = "SomeAccessKey" 
      ssl = "false" 
      throwOnError = "true" 
      retryTimeoutInMilliseconds = "5000" 
      databaseId = "0" 
      applicationName = "TRAXProSurvey" 
      connectionTimeoutInMilliseconds = "5000" 
      operationTimeoutInMilliseconds = "1000" 
      /> 
     </providers> 
    </sessionState> 

आप करना चाहते हैं एप्लिकेशन सेटिंग से सभी मापदंडों प्रदान कर सकते हैं। आप ऐप सेटिंग्स द्वारा कुछ पैरामीटर प्रदान कर सकते हैं और अपनी इच्छानुसार web.config द्वारा शेष कर सकते हैं। सत्र राज्य प्रदाता को पता चलेगा कि क्या आप web.config में वास्तविक मान या ऐप सेटिंग कुंजी प्रदान कर रहे हैं।

+0

तो इस मामले में, यह केवल उद्धरणों में सेटिंग की कुंजी है ?! बहुत आसन! – Andarta

+0

हां, यह है कि। उद्धरण में ऐप सेटिंग्स कुंजी। –

+0

कृपया ध्यान दें कि आप इन सेटिंग्स को एज़ूर पोर्टल में ओवरराइड नहीं कर सकते हैं। भले ही आप एक ही कुंजी के साथ ऐप सेटिंग्स प्रदान करते हैं, फिर भी web.config में मान का उपयोग किया जाएगा। – MPavlak

संबंधित मुद्दे