मैं इस विचार के साथ कोणीय 2 में एक प्रमाणीकरण प्रणाली बना रहा हूं कि यदि कोई उपयोगकर्ता प्रमाणित नहीं है, तो "संरक्षित" यूआरएल पर नेविगेट करने का प्रयास करता है, तो सिस्टम उपयोगकर्ता को लॉगिन पृष्ठ पर रीडायरेक्ट करेगा "अगली" नामक एक क्वेरी पैरा को यूआरएल करें जो लॉगिन सिस्टम को उपयोगकर्ता को उस स्थान पर रीडायरेक्ट करने में मदद करेगा जहां वह पहले स्थान पर होना चाहता था।लॉग इन के बाद कोणीय 2 रीडायरेक्ट
login?next=my-redirect-url
मेरी घटकों की रक्षा के लिए, मैं उन सभी को में डेकोरेटर @CanActivate(isUserAuthenticated)
उपयोग कर रहा हूँ। isUserAuthenticated
समारोह कुछ इस प्रकार है:
function isUserAuthenticated(
prevInstr: ComponentInstruction,
nextInstr: ComponentInstruction
): boolean {
const authService = injector.get(AuthService);
const router = injector.get(Router);
if(authService.isLoggedIn()) {
return true;
} else {
router.navigate(["/Login", {next: nextInstr.urlPath}]);
return false;
}
}
यह दृष्टिकोण काम नहीं कर रहा है क्योंकि nextInstr
की urlPath
संपत्ति "पूर्ण" यूआरएल (यह उदाहरण के लिए क्वेरी पैरामीटर का अभाव है) नहीं दिखा रहा है।
उदाहरण से nextInstr
जैसे पूर्ण यूआरएल बनाने का कोई तरीका है?
let url = router.generate(['./Login', {next: nextInstr.urlPath}]).toRootUrl();
चलें routeconfig के आधार पर संरचना उदाहरण का पालन करना कहते हैं::
login?next=my-redirect-url
और फिर आप यूआरएल
router.navigateByUrl('/' + url);
निम्नलिखित पर नेविगेट करने navigateByUrl का उपयोग
क्या आपने https://github.com/angular/angular/issues/4112 में चर्चा देखी है, मुझे लगता है कि यह पूरा करने का प्रयास करने के समान ही है। प्लंकर के लिए एक लिंक भी है (मैंने खुद को नजदीक नहीं देखा है)। –
@ गुंटर ज़ोचबॉउर लिंक के लिए धन्यवाद, लेकिन मैंने पहले ही सजाने वाले फ़ंक्शन 'isUserAuthenticated' के अंदर इंजेक्टर को कैसे प्राप्त किया है, इस समस्या को हल किया है। मेरी समस्या यह है कि लॉगिन के बाद उपयोगकर्ता को रीडायरेक्ट करने के लिए यूआरएल कैसे उत्पन्न करें। –
मैंने सभी विवरण नहीं पढ़े लेकिन मुझे लगता है कि उन्होंने क्वेरी पैराम्स पर भी चर्चा की। तब शोर के लिए खेद है। –