2010-08-28 17 views
18

मैं एक देव साइट को पासवर्ड-सुरक्षित करने के लिए आईआईएस 7 में फॉर्म प्रमाणीकरण का उपयोग कर रहा हूं, लेकिन साइट पर केवल स्थिर HTML फ़ाइलें + login.aspx + web.config शामिल होने पर प्रमाणीकरण प्राप्त हो रहा है।ASP.NET का उपयोग कर पूरी तरह से HTML पृष्ठों पर प्रपत्र प्रमाणीकरण कैसे करें?

जब मैंने फ़ाइलों को .aspx में बदल दिया, तो मुझे लॉगिन फॉर्म से संकेत दिया गया है कि मैं कुछ भी कल्पना नहीं कर रहा हूं। मेरे पास एक बहुत ही सरल लॉगिन स्क्रिप्ट है और इसे बाद में index.html पर रीडायरेक्ट करना चाहिए।

कोई सुझाव? संक्षेप में, पूरी साइट HTML (अब के लिए) का उपयोग कर रही है और पासवर्ड सुरक्षित होने की आवश्यकता है।

<authentication mode="Forms"> 
    <forms name="appNameAuth" path="/" loginUrl="~/login.aspx" defaultUrl="index.html" protection="All" timeout="525600"> 
    <credentials passwordFormat="Clear"> 
     <user name="[user]" password="[password]" /> 
    </credentials> 
    </forms> 
</authentication> 
<authorization> 
    <deny users="?" /> 
</authorization> 

उत्तर

10

एचटीएमएल फाइलों को आपके फॉर्म स्वामित्व से लॉक करने के लिए, आपको एएसपी.NET द्वारा सेवा की आवश्यकता है। आप aspnet_isapi.dll के साथ आपको आवश्यक एक्सटेंशन (उदा।) .html, .htm, आदि) को जोड़कर आईआईएस में ऐसा कर सकते हैं।

ऑनिस एएसपी.नेट उन फ़ाइलों की सेवा कर रहा है, आप किसी भी एएसपीएक्स पेज की तरह उनके लिए अनुमतियां निर्दिष्ट कर सकते हैं।

अधिक जानकारी MSDN का उल्लेख के लिए:

डिफ़ॉल्ट रूप से, IIS प्रक्रियाओं स्थिर सामग्री ही - HTML पृष्ठों और सीएसएस और छवि फ़ाइलों की तरह - और केवल हाथ अनुरोध बंद ASP.NET क्रम को जब .aspx, .asmx, या .ashx के विस्तार वाले पृष्ठ का अनुरोध किया जाता है।

आईआईएस 7, हालांकि, एकीकृत आईआईएस और एएसपी.नेट पाइपलाइनों के लिए अनुमति देता है। कुछ कॉन्फ़िगरेशन सेटिंग्स के साथ आप आईआईएस 7 को सभी अनुरोधों के लिए फॉर्म प्रमाणीकरण मॉड्यूल को आमंत्रित करने के लिए सेट कर सकते हैं। इसके अलावा, आईआईएस 7 के साथ आप किसी भी प्रकार की फ़ाइलों के लिए यूआरएल प्राधिकरण नियमों को परिभाषित कर सकते हैं। अधिक जानकारी के लिए, IIS6 और आईआईएस 7 सुरक्षा के बीच परिवर्तन देखें, आपका वेब प्लेटफ़ॉर्म सुरक्षा, और आईआईएस 7 यूआरएल प्राधिकरण को समझना।

लंबी कहानी कम पहले के संस्करणों में, IIS 7, आप केवल रूपों प्रमाणीकरण का उपयोग संसाधनों ASP.NET क्रम द्वारा नियंत्रित की रक्षा के लिए कर सकते हैं। इसी तरह, यूआरएल प्रमाणीकरण नियम केवल एएसपी.NET रनटाइम द्वारा प्रबंधित संसाधनों पर लागू होते हैं। लेकिन आईआईएस 7 के साथ फॉर्म्स प्रमाणीकरण मॉड्यूल और आईआईएस की HTTP पाइपलाइन में UrlAuthorizationModule को एकीकृत करना संभव है, जिससे सभी अनुरोधों के लिए कार्यक्षमता को विस्तारित किया जा सके।

1

मैं एक ही समस्या हल हो गया है कुछ दिन पहले, इस धागे पर 3:19 PM पर @ 2007/11/21 fr33m3 द्वारा पोस्ट, का पालन करते हुए: http://forums.asp.net/t/1184547.aspx 2. से करने के लिए सभी चरणों का पालन करें 5. और आप कर चुके हैं!

आशा है कि यह आपकी मदद कर सकता है जैसे कि यह मेरी मदद करता है।

+0

तुम इतनी मामले में अन्य साइट गायब हो जाता है के बारे में जानकारी संक्षेप में प्रस्तुत करना चाहते हो सकता है। –

10

आईआईएस 7 में यदि आप फॉर्म प्रमाणीकरण के तहत * .html या * .htm फ़ाइलों (या अन्य गैरनेट एक्सटेंशन) की रक्षा करना चाहते हैं तो अपने वेब पर निम्न पंक्तियां जोड़ें।config:

<compilation> 
    <buildProviders> 
     <add extension=".html" type="System.Web.Compilation.PageBuildProvider" /> 
     <add extension=".htm" type="System.Web.Compilation.PageBuildProvider" /> 
    </buildProviders> 
</compilation> 

और

<system.webServer> 
    <handlers> 
     <add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" /> 
     <add name="HTM" path="*.htm" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" /> 
    </handlers> 
</system.webServer> 
+2

मैंने एक्सेल फ़ाइलों की सेवा के लिए इसका उपयोग करने की कोशिश की। हालांकि, एएसपी.नेट ने एक्सेल फाइलों को संकलित करने की कोशिश की और इसने एक वाक्यविन्यास त्रुटि दी। – Sjoerd

1

हालांकि यह एक पुराने सवाल है, मैं pomarc का जवाब वास्तव में उपयोगी में लिंक मिल। नीचे सारांश है जो आईआईएस 7 के लिए उपयुक्त है।

अपने web.config में, जोड़ने या संशोधित <handlers><system.webServer> के तहत:

<handlers> 
    <add name="HTML" path="*.html" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" /> 
</handlers> 

साथ verb बदलें मान अपने एक आवश्यक; scriptProcessor आपके पर्यावरण के सही पथ के साथ मूल्य।

फिर, जोड़ सकते हैं या <compilation> और <httpHandlers> संशोधित <system.web> के तहत:

<compilation debug="false" strict="false" explicit="true"> 
    <buildProviders> 
    <!--Add below so .html file will be handled by ASP.NET (for use of Forms Authentication)--> 
    <add extension=".html" type="System.Web.Compilation.PageBuildProvider" /> 
    </buildProviders> 
</compilation> 
<httpHandlers> 
    <!--Add below so .html file will be handled by ASP.NET (for use of Forms Authentication)--> 
    <add verb="GET, HEAD, POST, DEBUG" path="*.html" type="System.Web.UI.PageHandlerFactory" /> 
</httpHandlers> 

अपने आवश्यक एक के साथ verb मूल्य बदलें।

तुम भी ',' अधिक विस्तार अल्पविराम के द्वारा अलग भी हो सकते हैं