में फ़ोल्डरों की सुरक्षा मेरे पास मेरे सामग्री फ़ोल्डर में कुछ फ़ाइलें हैं जो मैं नहीं चाहता कि कोई उपयोगकर्ता अधिकृत किए बिना डाउनलोड करने में सक्षम हो। मैं किसी उपयोगकर्ता को टाइप करके फ़ाइल में क्यों पहुंचने से रोक सकता हूं ... सामग्री/{filename} पता बार में?एमवीसी
एमवीसी
उत्तर
कुछ संभावनाएं हैं। पहले एक अपने web.config में <location>
टैग का उपयोग कर में होते हैं:
<location path="Content">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
एक और संभावना है (उदाहरण के लिए App_Data फ़ोल्डर की तरह) जहां कोई नहीं पहुँच सकते हैं एक फ़ोल्डर के अंदर उन फ़ाइलों को रखा और फिर एक नियंत्रक कार्रवाई है जो उन फ़ाइलों की सेवा करेगा जो [Authorize]
विशेषता से सजाए जाएंगे।
खैर एक ही रास्ता C:\inetpub\wwwroot
C:\temp\files
की तरह कुछ करने के लिए यह परिवर्तन के तहत उन्हें होने के आईआईएस के संदर्भ से बाहर यह है करने के लिए है, तो बजाय है।
आपके डीबी में दस्तावेज़ नाम से जुड़ा एक GUID है और फ़ाइल को लिंक प्रदर्शित करने के लिए GUID का उपयोग करें।
आपके नियंत्रक कार्रवाई में आप केवल GUID स्वीकार करेंगे, फ़ाइल नाम प्राप्त करें और फिर अपनी प्रतिक्रिया में फ़ाइल की सेवा करें।
यह मेरे लिए काम नहीं करता है।
<configuration>
<appSettings>
...
</appSettings>
<system.web>
...
</system.web>
<system.webServer>
...
</system.webServer>
<location path="Content">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</configuration>
मैं अपने MVC 4.0 आवेदन, लॉगिन और लॉगआउट चलाने के लिए, किसी भी अनुप्रयोग तक नहीं पहुंच सकते, लेकिन अभी भी तरह
http://localhost:80966/Content/Files/home.jpg
कहाँ इस वेब में स्थित होगा सीधा लिंक से फ़ाइल का उपयोग कर सकते हैं। config? – user517406
'<कॉन्फ़िगरेशन>' तत्व के अंदर और बाहर '' के अंदर। यह जड़ पर है। –
ठीक है धन्यवाद, यह सीधे काम नहीं कर रहा है क्योंकि यह नहीं <उपयोगकर्ताओं को अनुमति दें = "?" /> :) –
user517406