Blazor 组件动态授权

Posted

技术标签:

【中文标题】Blazor 组件动态授权【英文标题】:Blazor component dynamic authorization 【发布时间】:2021-09-05 08:12:17 【问题描述】:

我正在尝试让 Blazor 身份验证为 Razor 页面/组件动态工作。 我将举例说明我正在努力实现的目标......

假设您有 2 个具有 2 个不同角色的用户: 用户 1 具有 user 角色 用户 2 具有 useradmin 角色

他们正试图通过/queue/user/queue/admin 访问同一个组件(/queue/queueType:string)。 在我们的示例中,用户 1 将只能访问 /queue/user 而不能访问 /queue/admin 组件,但用户 2 将能够访问两者。

@page "/queue/queueType:string"
@attribute [Authorize(Roles = queueType)] <-- an object reference is required for queueType

【问题讨论】:

【参考方案1】:

您可以尝试以下方法,而不是这样做:

@page "/queue/user"
@page "/queue/admin"

然后,当您定义 UI 元素时,您可以将它们包装在 &lt;AuthorizeView Roles="admin"&gt; 中,并为用户和管理员角色显示不同的内容。

【讨论】:

我不知道我可以多次使用@page。但这并不真正适合我的场景,因为大多数代码都是可重用的。 queueType 仅用于获取不同项目的 API 路由。我想我设法让它与 if (queueType == "admin") @attribute [Authorize(Roles = Admin)] 一起工作,但我会尝试更整洁的东西

以上是关于Blazor 组件动态授权的主要内容,如果未能解决你的问题,请参考以下文章

Blazor WebAssembly身份认证与授权

Blazor WebAssembly身份认证与授权

Blazor入门100天 : 身份验证和授权

C#:如何在 Blazor Wasm 托管中将动态 Razor 组件从服务器发送到客户端?

如果在foreach循环下动态生成Textarea不止一次,如何在Razor(blazor)组件中获取Textarea值

使用 Blazor 开发内部后台:了解 Blazor 组件