Angular语言 - Okta基于角色的授权



我可以在我的Angular应用中使用okta/okta- Angular -npm包实现认证。现在我们需要实现基于角色的授权。我们已经创建了角色组,但如何在Angular代码中实现它呢?

我相信你对AuthGuard, &我还假设在用户模型中你有一个参数UserRole

在您的AuthGuard中尝试检查用户角色,请查看下面的代码

import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { OktaAuthService } from './app.service';
@Injectable({providedIn: 'root'})
export class OktaAuthGuard implements CanActivate {
constructor(private okta: OktaAuthService, private router: Router) {}
async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const authenticated = await this.okta.isAuthenticated();
if (authenticated) {

const user = await this.okta.getUser();
if(user.role == "YOUR_EXPECTED_ROLE") {
return true;
}

}
// Redirect to login flow.
this.okta.login(state.url);
return false;
}
}

如果你在上面的第一个If条件中检查我正在获取用户,在验证用户角色,这样你就可以执行基于角色的身份验证

这不是一个合适的解决方案,但无论你想达到什么目的,这个方法可能会帮助你。

最新更新