मैं ui- राउटर के साथ AngularJS का उपयोग करके IdentityServer4 के लिए एक फ्रंटएंड का निर्माण कर रहा हूं, लेकिन अगर मैं UserInteraction.LoginUrl को /index.html#!/login पर सेट करता हूं तो # urlencoded हो जाता है, जिससे कोणीय टूट जाता है।

मैं इसे ठीक करने की कोशिश कर रहा हूं, लेकिन मुझे कोई प्रासंगिक पोस्ट या दस्तावेज नहीं मिल रहा है।

कोणीय के लिए, दुर्भाग्य से क्वेरी स्ट्रिंग को काम करने के लिए $ स्थान के लिए # के बाद आना पड़ता है, इसलिए यूआरएल से #!/लॉगिन को हटाना एक वैध समाधान नहीं है।

0
Morten Nilsen 12 सितंबर 2019, 14:14
क्या फ़ंक्शन-विशिष्ट एंट्रीपॉइंट एक विकल्प है? उदा. /auth/login जो एक ही कोणीय ऐप को लोड करता है लेकिन साइन इन फ्लो क्लाइंट-साइड को किक करने के लिए तर्क रखता है? identityserver4 इसके लिए एक रिटर्न यूआरएल क्वेरी स्ट्रिंग पैरामीटर भी पास करना चाहेंगे, इसलिए आपको इसे भी समायोजित करने की आवश्यकता होगी।
 – 
mackie
12 सितंबर 2019, 19:37
मैं इसे यथासंभव सरल बनाना चाहता हूं और एमवीसी विचारों और क्या नहीं का उपयोग करने से बचना चाहता हूं। मैं रिटर्न यूआरएल पास करने के बारे में अच्छी तरह से जानता हूं, यही वह है जो मैं काम करने की कोशिश कर रहा हूं :) अगर मैं लॉग इन यूआरएल को index.html#!/login पर सेट करता हूं तो रीडायरेक्ट index.html%23!/login?RedirectUrl=... या कुछ समान हो जाता है, जो कोणीय में रूटिंग को तोड़ देता है
 – 
Morten Nilsen
13 सितंबर 2019, 18:39
अगर यह मैं होता तो मेरे पास कोणीय ऐप के लिए एक होस्ट पेज (या तो स्थिर फ़ाइल या एमवीसी के माध्यम से परोसा जाता है) होता है जो आपको आवश्यक प्रवेश बिंदु के साथ बूटस्ट्रैप करता है।
 – 
mackie
14 सितंबर 2019, 01:21
मैंने इसे माना है, लेकिन यह एक खराब समाधान की तरह लगता है। क्लाइंट को ढांचे में एक बग की तरह मुझे जो लगता है उसके आसपास काम करने के लिए अतिरिक्त कूद करने की ज़रूरत है, बस मेरे साथ सही नहीं बैठता है। मेरी आशा है कि urlencode नहीं करने के लिए पहचान सर्वर 4 को बताने की कुछ अस्पष्ट विधि है कि # - या वह कोणीयज # से पहले देखने के लिए $ स्थान सेवाओं की खोज विधि को ठीक करता है।
 – 
Morten Nilsen
16 सितंबर 2019, 10:37
मैं इसे एक बग नहीं कहूंगा क्योंकि यह एक सर्वर-साइड फ्रेमवर्क है कि यह क्वेरी पैरामीटर को जोड़ने में सक्षम होना चाहिए और ये टुकड़े से पहले होना चाहिए। मुझे लगता है कि कुकी मिडलवेयर भी इसी तरह काम करेगा।
 – 
mackie
16 सितंबर 2019, 14:56

2 जवाब

कुछ हद तक हैकी वर्कअराउंड के रूप में, इस स्क्रिप्ट के साथ एक न्यूनतम login.html जोड़ना काम करता है;

<script>
    window.location.href = window.location.href.replace('login.html', 'index.html#!/login');
</script>

लेकिन यह स्पष्ट रूप से आदर्श समाधान नहीं है, क्योंकि क्लाइंट को केवल दो बार पुनर्निर्देशित करने के लिए सर्वर पर एक बाहरी दौर की यात्रा करनी होती है।

0
Morten Nilsen 19 सितंबर 2019, 10:46

मेरे समाधान में मैंने मूल रूप से उपयोगकर्ता इंटरैक्शन के लिए नीचे उपयोग किया था। वास्तविक एसपीए एप्लिकेशन लोड किया गया था क्योंकि मैं usefileserver का उपयोग कर रहा था जो आंतरिक रूप से डिफ़ॉल्ट फ़ाइल "/Account/index.html" परोसता है - मैंने wwwroot के अंदर खाता फ़ोल्डर बनाया है

एक बार index.html लोड हो जाने के बाद, कोणीय मार्ग बाकी का ख्याल रखता है

 services.AddIdentityServer(setupAction =>
    {
        setupAction.UserInteraction.LoginUrl = "/Account#Login";
        setupAction.UserInteraction.LogoutUrl = "/Account#Logout";
        setupAction.UserInteraction.ErrorUrl = "/Account#Error";
    })

मुझे कोई एन्कोडिंग समस्या नहीं मिली

0
Aypn 3 अक्टूबर 2019, 04:11