I have seen discussions in Gitter or GitHub issues in the Angular repo, where they do some workarounds to get hold of an injector (using a gloal variable or something) in `canActivate()` and then request the router and call `router.navigate...` (if I remember correctly)
On Wednesday, January 6, 2016 at 10:59:30 PM UTC+1, Mark Rathwell wrote: > > Where do you do the redirect to the login component here though (when > canActivate() fails)? It's obviously a nicer AOP style, but I've never > seen where people are doing the login redirect with this method. > > On Tue, Jan 5, 2016 at 4:18 AM, Günter Zöchbauer <[email protected] > <javascript:>> wrote: > >> I think canActivate and Activate router lifecycle methods are the >> official way >> https://github.com/angular/router/issues/100 >> >> On Tuesday, January 5, 2016 at 12:20:12 AM UTC+1, Mark Rathwell wrote: >>> >>> Looks like I missed the obvious on this one. You can just subscribe to >>> route transitions and do the authentication checks and redirections there. >>> Subscribing in the top-level component constructor works as expected for me: >>> >>> this.router.subscribe((nextValue) => { >>> >>> if (nextValue !== 'login' && nextValue !== 'register' && >>> !this.sessionService.accessToken()) { >>> >>> this.sessionService.data['urlRedirectAfterLogin'] = nextValue; >>> >>> this.router.navigate(['/Login']); >>> >>> } >>> >>> }); >>> >>> On Mon, Jan 4, 2016 at 12:10 AM, Mark Rathwell <[email protected]> >>> wrote: >>> >>>> I'm interested in this also. I have spent most of the day trying to >>>> make something work by overriding the router-outlet, but have only come up >>>> with dirty hacks that sort of work. >>>> >>>> There is literally zero information out there on authentication with >>>> Angular 2 that is still current and valid. It is such a standard and >>>> critical thing, I must be missing something. >>>> >>>> On Tue, Dec 29, 2015 at 5:17 AM, Martin Wawrusch <[email protected]> >>>> wrote: >>>> >>>>> Hi guys, I am trying to set up routing with authentication properly. >>>>> >>>>> So far I am using the router's canActivate decorator to determine if >>>>> that component can be shown or not. The question is: where do I put the >>>>> redirect to a login page? Doing a hard redirect with window.location >>>>> within >>>>> the canActivate check seems to be wrong). Should I override the >>>>> router-outlet instead, and if so, how? >>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "AngularJS" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To post to this group, send email to [email protected]. >>>>> Visit this group at https://groups.google.com/group/angular. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "AngularJS" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/angular. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.
