2012-10-25 23 views
10

हम एक सर्विसस्टैक एपीआई बना रहे हैं जो मूल प्रमाणीकरण का उपयोग करेगा।जब सर्विसस्टैक प्रमाणीकरण विफल रहता है, तो पुनर्निर्देशित न करें?

var authDb = new OrmLiteConnectionFactory("Server=(...);", true, MySqlDialectProvider.Instance); 

var authRepo = new OrmLiteAuthRepository(authDb); 
authRepo.CreateMissingTables(); 
container.Register<ICacheClient>(c => new MemoryCacheClient()); 
container.Register<IUserAuthRepository>(c => authRepo); 

Plugins.Add(
    new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider() }) 
); 

जब /Account/Login.aspx?ReturnUrl= करने के लिए कोई प्राधिकरण हैडर या गलत उपयोगकर्ता नाम + प्रतिक्रिया पारित के साथ एक अनुरोध भेजने के लिए रीडायरेक्ट कर रहा है: मैं वर्तमान में इस प्रकार मेरी AppHost में अधिकार का सेट अप किया है ...

Parital अनुरोध + प्रतिक्रिया उदाहरण:

POST http://localhost:60278/reserve HTTP/1.1 

HTTP/1.1 302 Found 
Location: /Account/Login.aspx?ReturnUrl=%2freserve 
X-Powered-By: ServiceStack/3,924 Win32NT/.NET 

वहाँ यह केवल एक HTTP के साथ जवाब 401 अनधिकृत या एक HTTP 403 निषिद्ध बनाने के लिए एक तरीका है?

उत्तर

22

डिफ़ॉल्ट ServiceStack के AuthFeature तक केवल एचटीएमएल सामग्री प्रकार अनुरोधों के लिए डिफ़ॉल्ट पर रीडायरेक्ट करने की कोशिश करेंगे ~/login पथ। आप अशक्त करने के लिए AuthFeature में रीडायरेक्ट पथ सेट करके ऐसा ओवरराइड कर सकते हैं:

Plugins.Add(new AuthFeature(...) { HtmlRedirect = null }); 

यह मानक 401 UnAuthorized प्रतिक्रिया है कि अन्य सामग्री-प्रकार प्राप्त करना प्रारंभ कर देगा।

विश्व स्तर पर अशक्त करने के लिए HtmlRedirect स्थापित करने के बाद, आप इसे वापस एक सहारा लिया, उदा जोड़ सकते हैं:

[Authenticate(HtmlRedirect="~/path/to/redirect/to")] 
+0

मुझे लगता है कि मुझे यहाँ भ्रमित कुछ ASP.net सामान होना चाहिए। मैंने इसे दस्तावेज़ों में देखा है और HtmlRedirect = null की कोशिश की है और इसके अलावा मैं स्वीकार/सामग्री-प्रकार शीर्षलेख के लिए एप्लिकेशन/जेसन का उपयोग कर रहा हूं। रीडायरेक्ट वही नहीं है जैसा आप लिखते हैं (~/लॉगिन), लेकिन /Account/Login.aspx। मैं अपने global.aspx और सामान के माध्यम से जाऊंगा, आपको बताएं। मैं अब आपका जवाब स्वीकार कर रहा हूं, हालांकि, यह समाधान है जब एसएस सही तरीके से स्थापित होता है। धन्यवाद! :) – Magge

+0

हाँ, यह मेरा बुरा था। मेरे पास अभी भी मेरे web.config में .NET सदस्यता सामग्री थी, ऐसा लगता है कि यह एसएस प्रमाणीकरण को ओवरराइड करता है। इसे हटाने के बाद एक आकर्षण की तरह काम करता है। – Magge

+0

मुझे मिल गया! ... :) –

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

  • कोई संबंधित समस्या नहीं^_^