2
私は保護されたルート/protected-route
を持っています。認証ガード拒否のリダイレクトURLを角4で保存する
/* --- Angular --- */
import { Injectable } from '@angular/core';
import { CanActivate, Router, RouterStateSnapshot } from '@angular/router';
/* --- Services --- */
import { AuthenticationService } from './authentication.service';
import { StorageService } from './storage.service';
@Injectable()
export class AuthenticatedRouteGuardService implements CanActivate {
constructor(private authenticationService: AuthenticationService, private
router: Router, private routerStateSnapshot: RouterStateSnapshot) { }
canActivate() {
if (this.authenticationService.isAuthenticated()) { return true; } else {
console.log(this.routerStateSnapshot.url);
this.router.navigate(['/login']);
return false;
}
}
}
私がログイン成功後にユーザーをリダイレクトすることができるようにしようとした経路、すなわち/protected-route
を保存したい:authentication-guard.service.ts
ファイルには、有効なセッションが見つからない場合、ユーザは/login
に投げなければならないことを指示します。ユーザーが/login
にスローされる前に経路情報を取得できません。 router.url
とactivatedRoute.snapshot.url
はどちらも空の値を返します。
あなたは 'CanActivate'インターフェイスを実装していますか? yesの場合、 'canActivate'メソッドの中に' state'( 'RouteStateSnapshot')があります。' state.url'をどこかに保存し、ユーザが認証した後に使用します。 – developer033
RouterStateSnapshotのプロバイダがないと言っています。ファイルを含めるために質問を更新する。 –
あなたのメソッドは 'canActivate'メソッドを間違って実装しています.. – developer033