私は自分のプロジェクトでangular2とlaravel 5.3を使用しました。ユーザがサーバにログインすると、ユーザの許可を送信して認可を処理します。そこでアクセスできないユーザーからルートを保護するためのガードを書きました。ここ は私のガードクラスのコードです:角度2の役割とアクセス許可
export class AccessGuard implements CanActivate{
permissions;
currentRoute;
constructor(private authService:AuthService,private router:Router){
this.permissions = this.authService.getPermissions();
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.checkHavePermission(state.url);
}
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.checkHavePermission(state.url);
}
private checkHavePermission(url){
switch (true) {
case url.match(/^\/panel\/users[\/.*]?/):
return this.getPermission('user.view');
case url.match(/^\/panel\/dashboard/):
return true;
case url.match(/^\/panel\/permissions/):
return this.getPermission('permissions.manager');
case url.match(/^\/panel\/candidates[\/.*]?/):
return this.getPermission('candidate.view');
}
}
getPermission(perm){
for(var i=0;i<this.permissions.length;i++){
if(this.permissions[i].name == perm){
return true;
}
}
return false;
}
}
今ルートが固定されていることを、私はどのように私は、コンポーネントクラス内のユーザー権限にアクセスできることを不思議。時にはユーザーがルートにアクセスすることができますが、彼はdomの特定の部分を見ることができないためです。このような状況にどう対処することができますか?
あなたの答えに感謝します。しかし、ユーザーがリロードすると、そのページはどうなりますか?私は、ローカルストレージ内のアクセス許可を保存すると思ったが、それは安全ではありません。何をお勧めしますか? –
ローカルストレージ/セッションストレージはあなたの選択肢ですが、必要なものだけを格納します。ユーザー名とパスワードの組み合わせは明確ではありません。私はJWTのようなものでそれをする方法があると確信していますが、まだそれについての経験はありません。 –
JWTは、クライアントに認証を安全に保存する傾向のある方法です。 – Pierre