私は現在、IdentityServer4認証サービスでAngularを使用しているプロジェクトに携わっています。現在、ユーザーが最初にページにアクセスすると、ログインリンクが表示されます。ユーザーがこのリンクをクリックすると、IdentityServerログインページにリダイレクトされます。ログインに成功すると、ユーザーはGoogleのサービスにリダイレクトされ、新しいメニューリンクが利用可能になります。認証後のメニューリンクを隠す角度
問題は、使用されているOidcSecurityServiceライブラリが、認証済みであるかどうかを判断できる遅延があることです。この遅れの間に ログインリンクは、認証が確認されたときに消えるまで、利用可能です。
私はログインをデフォルトで隠していると考えていましたが、ログインしていないときにこのリンクが利用可能である必要があり、OidcSecurityServiceは には私が見ることのできる方法がありません認証チェックが行われました。
初期ページの表示時にログインリンクがまったく使用できないようにすることをお勧めしますか?
HTML
<li routerLinkActive="active" class="hide"
*ngIf="!userIsAuthorized"
[ngClass]="{'show': showLogin, 'hide': !showLogin }">
<a style="cursor:pointer;" (click)="onLogin()">Login</a>
</li>
認証が決定されたときに、このサービスはOidcSecurityService層から起動されます。あなたはUserServiceのにloginClicked変数を追加したいと思うあなたの現在の設定を使用して
UserServiceの
constructor(private securityService: OidcSecurityService,
private userApiService: UserApiService,
private spinnerService: SpinnerService) {
console.log('userService() start');
//this will allow us to get the user details, needed to get the user permissions
this.securitySubscription = this.securityService.onUserDataLoaded
.subscribe(() => {
console.log('loading user data');
this.userLoadStarted.next(true);
this.loadAllUserDetails();
});
//We must check the local storage and IF user details saved, use these values and emit event, else make/use empty
var userAuthorized = this.securityService.isAuthorized;
if (userAuthorized != undefined && userAuthorized === true) {
console.log('userService() isw auth');
this.userPermissions = LocalStorageService.read('userPermissions');
this.userDetails = LocalStorageService.read('userDetails');
this.userDetailsAlreadyLoaded = true;
} else {
console.log('userService() not auth');
this.userPermissions = [];
this.userDetailsAlreadyLoaded = false;
}
console.log('userService() end');
}
サンプルコードを投げてください。これを行うには6つの方法がありますが、既存のコードを使用すると、すばやくきれいに表示できます。 –
@ Z.Bagley私が見つけた問題は、Oidbcサービスは、実際に認証を行う場合、非表示と表示を行うユーザーサービスの負荷イベントをトリガーするだけです。したがって、ユーザーがログインしていないときは、更新は発生しません。したがって、私はそれを表示することはできませんので、デフォルトでログインを隠すことはできません。 ...... – dreza