我目前正在使用adal-angular5
和Adal5Service
作为安全身份验证。条件访问当前在用户未授权时有效,但错误在URL中显示为循环,而不是以UI的形式。我们已经为ERROR页面创建了一个UI,但是我们不知道在哪里将条件放在用户未授权的位置,用户将转到ERROR页面而不是循环错误。条件访问是通过Azure Active Directory端的组分配完成的,因此我们不知道我们将如何以及将使用哪些代码/条件。
这是我的身份验证代码。我们正在使用adal.guard.ts(typescript)
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { Adal5Service } from 'adal-angular5';
import { environment } from '../environments/environment';
import { Router } from '@angular/router';
@Injectable()
export class AdalGuard implements CanActivate {
constructor(private adal5Service: Adal5Service, private router: Router) {
console.log("location below: ");
if (location)
console.log(location);
else
console.log("some falsy value");
this.adal5Service.init({ ...environment.ssoConfig, redirectUri: location.protocol + '//' + location.host + location.pathname });
}
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if (!environment.production)
return true;
this.Callback();
if (!this.adal5Service.userInfo.authenticated) {
this.LogIn();
//this.router.navigate(['error/401']);
return false;
} else {
return true;
}
}
Callback() {
this.adal5Service.handleWindowCallback();
}
LogIn() {
this.adal5Service.login();
}
}
正如您在代码中看到的那样。我们认为这是循环中错误的原因
if (!this.adal5Service.userInfo.authenticated) {
this.LogIn();
...
}
如果用户未经过身份验证,他/她将进入正确的登录状态,但如果用户未进行授权该怎么办?他/她将返回登录页面,了解导致循环的原因。
这是显示在URL中循环的错误: