Ich denke, es ist ein ziemlich einfaches Problem, aber leider weiß ich nicht wirklich, wie man damit umgeht.Verbinden Sie den Authentifizierungsdienst mit dem AuthGuard (einfaches Problem)
Ich versuche, meine UserAuthenticationService
Service mit der ActivationGuard
zu verbinden.
UserAuthenticationService.ts
:
import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
@Injectable()
export class UserAuthenticationService {
isUserAuthenticated: boolean = false;
username: string;
constructor(private http: Http) {
}
authentication() {
this.http.get(`http://localhost/api/auth/isLogged/${this.username}`)
.subscribe(res => { //^^returns true or false, depending if the user is logged or not
this.isUserAuthenticated = res.json();
},
err => {
console.error('An error occured.' + err);
});
}
}
ActivationGuard.ts
import {Injectable} from '@angular/core';
import {Router, RouterStateSnapshot, ActivatedRouteSnapshot} from '@angular/router';
import {Observable} from 'rxjs/Observable';
import {UserAuthenticationService} from './UserAuthenticationService';
interface CanActivate {
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>|Promise<boolean>|boolean
}
@Injectable()
export class WorksheetAccessGuard implements CanActivate {
constructor(private router: Router, private userService: UserAuthenticationService) {
}
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if (this.userService) {
this.router.navigate(['/']);
return false;
}
return true;
}
}
Hinweis
Es funktioniert großartig, wenn ich localStorage
nur verwenden, um die Informationen zu speichern, wenn der Benutzer angemeldet ist oder nicht:
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if (!localStorage.getItem('currentUser')) {
this.router.navigate(['/']);
return false;
}
return true;
}
Aber wie kann ich den Dienst mit dem Schutz verbinden? Ich freue mich auf jede Art von Hilfe. Vielen Dank im Voraus.
Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen und ich werde meinen Beitrag bearbeiten.
@Royi Ist es jetzt besser? – Kaysh
Vielleicht ist es nur ich, aber Sie haben den Authentifizierungsdienst bereits an WorksheetAccessGuard übermittelt. Damit ? (was meinst du "_Aber wie kann ich den Dienst mit dem Guard_ verbinden") –
@Royi Etwas fehlt. – Kaysh