我正在编写一个关于论坛主题的术语项目,并希望将普通用户和管理员的功能分开。我的问题是我不知道如何在授权后显示用于访问管理功能的特定选项卡或链接,例如添加主题等..
我尝试在 Nest.js + React 应用程序中实现基于角色的访问控制。我希望能够在用户经过身份验证后显示用于访问管理功能的特定选项卡或链接。但是,我不确定在应用程序中完成此操作的最佳方法
给这只猫剥皮的方法有很多。我认为我们需要更多关于您如何尝试在 Nest.js 应用程序中实现基于角色的访问控制的信息,以便给出更详细的答案。
当用户获得授权时,您要从 Nest.js 向 React 应用程序发送什么内容?
如果您当前正在使用 Nest.js 守卫进行授权和 RBAC,您可以
import { ExtractJwt, Strategy } from 'passport-jwt';
import { PassportStrategy } from '@nestjs/passport';
import { Injectable } from '@nestjs/common';
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
constructor() {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration: false,
secretOrKey: 'secrete',
});
}
async validate(payload) {
return {
userId: payload.id,
userName: payload.userName,
role: payload.role,
};
}
}
然后可以将其导入到您的
app.module
文件中
import { JwtModule } from '@nestjs/jwt';
import { JwtStrategy } from './auth/jwt.strategy';
@Module({
imports: [
...,
JwtModule.register({ secret: 'secrete', signOptions: { expiresIn: '1h' } }),
],
...,
providers: [..., JwtStrategy],
})
export class AppModule {}
现在您将可以访问前端应用程序中的
role
上下文。
这只是实现此目的的众多方法之一,我认为如果没有当前已完成工作的进一步信息,将很难引导您走向正确的方向。