2017-03-15 9 views
6

मैं उपयोगकर्ताओं को प्रमाणीकृत करने के लिए जेडब्ल्यूटी का उपयोग कर रहा हूं। मेरे कोणीय 2 ऐप में राउट्स का हिस्सा CanActivate Guard द्वारा संरक्षित है जो लॉग इन पेज पर रीडायरेक्ट करेगा यदि उपयोगकर्ता लॉग इन नहीं है। अब मैं लॉगआउट बटन कार्यान्वित कर रहा हूं और लॉगिन पेज पर रीडायरेक्ट करना चाहता हूं। मैं केवल तभी रीडायरेक्ट करना चाहता हूं यदि वर्तमान रूट गैर लॉग इन उपयोगकर्ताओं (जैसे खाता पृष्ठ) पर दिखाई न दे। यदि उपयोगकर्ता होम पेज में उदाहरण के लिए है तो मैं लॉगिन पेज पर रीडायरेक्ट नहीं करना चाहता हूं।कोणीय 2: ट्रिगर वर्तमान मार्ग गार्ड - लॉगआउट कार्रवाई संभाल

यह सही होगा अगर मैं जांच सकता हूं कि वर्तमान मार्ग सुरक्षित है या नहीं, तो यह गार्ड मौजूद है या नहीं। ऐसा करना संभव है?

गार्ड:

public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
    if (this.loginService.getCurrentUserName()) { 
     // logged in so return true 
     return true; 
    } 
    // not logged in so redirect to login page with the return url 
    this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }}); 
    return false; 
} 

उत्तर

2

सभी मार्ग गार्ड की जरूरत पृष्ठों के लिए, आप एक विशिष्ट मार्ग पथ '/ खाता/..' की तरह हो सकता है (और आप मार्ग गार्ड पेज में लॉग इन किया है या नहीं की जाँच कर सकते या नहीं

public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
    this.checkRouteNaviation(this.route.url); 
} 

public checkRouteNaviation(url) { 
    if(url.includes('account') && !this.loginService.getCurrentUserName()) { 
     // when url is of guard url and not logged in, redirect to login page with the return url 
     this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }}); 
     return false; 
    } 
    return true; 
} 

आशा है कि यह मदद करता है

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