मेरे पास एक कोणीय 2 एप्लिकेशन है जिसमें मुझे प्रत्येक पृष्ठ पर प्रमाणित करने की आवश्यकता है। तो मैंने पुष्टि करने के लिए एक कस्टम राउटरऑलेट लागू किया है कि मैं प्रत्येक पृष्ठ परिवर्तन पर लॉग इन हूं। http://plnkr.co/edit/YnQv7Mh9Lxc0l0dgAo7B?p=previewकोणीय 2 बाल मार्गों के साथ प्रमाणीकरण
वहाँ मार्ग परिवर्तन रोकना और प्रवेश के लिए अनुप्रेषित जब उपयोगकर्ता प्रमाणीकृत नहीं है करने के लिए एक बेहतर तरीका है:
@Directive({
selector: 'auth-outlet'
})
export class AuthOutlet extends RouterOutlet {
publicRoutes: any;
private parentRouter: Router;
private authService: AuthService;
constructor(_elementRef: ElementRef,
_loader: DynamicComponentLoader,
_parentRouter: Router,
@Attribute('name') nameAttr: string,
_authService: AuthService) {
super(_elementRef, _loader, _parentRouter, nameAttr);
this.parentRouter = _parentRouter;
this.authService = _authService;
this.publicRoutes = {
'Login': true
};
}
activate(oldInstruction: ComponentInstruction) {
var url = this.parentRouter.lastNavigationAttempt;
console.log('attemping to nav');
if (!this.publicRoutes[url] && !this.authService.loggedIn){
var newInstruction = new ComponentInstruction('Login', [], new RouteData(), Login, false, 1);
return super.activate(newInstruction);
} else {
return super.activate(oldInstruction);
}
}
}
यहाँ एक काम कर कोड है?
शानदार जांचें !! आपको और क्या चाहिए !! – micronyks
ठीक है, एक चीज के लिए आपको एक घटक निर्देश को नया नहीं करना चाहिए। तो यह पहले से ही समस्याएं हैं। इसके अलावा इसमें समस्याएं हैं यदि आप ऐसे बच्चे मार्ग में हैं जो लॉगिन मार्ग के बारे में नहीं जानते हैं। (मैंने पोस्टर के साथ इस मुद्दे पर काम किया) –
यदि कोई पृष्ठ के गहरे लिंक से लिंक करता है, तो सर्वर शामिल हो जाता है और आप सर्वर पर ऑथ चेक करते हैं। अगर कोई अधिकृत है, तो वे आपके ऐप में आते हैं। एक बार आपके ऐप में, वे आसानी से आगे बढ़ सकते हैं। ब्राउजर और जेएस को यहां ऑथ चेक नहीं करना चाहिए, सर्वर को चाहिए। –