Blazor 组件动态授权
Posted
技术标签:
【中文标题】Blazor 组件动态授权【英文标题】:Blazor component dynamic authorization 【发布时间】:2021-09-05 08:12:17 【问题描述】:我正在尝试让 Blazor 身份验证为 Razor 页面/组件动态工作。 我将举例说明我正在努力实现的目标......
假设您有 2 个具有 2 个不同角色的用户:
用户 1 具有 user
角色
用户 2 具有 user
和 admin
角色
他们正试图通过/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 元素时,您可以将它们包装在 <AuthorizeView Roles="admin">
中,并为用户和管理员角色显示不同的内容。
【讨论】:
我不知道我可以多次使用@page。但这并不真正适合我的场景,因为大多数代码都是可重用的。queueType
仅用于获取不同项目的 API 路由。我想我设法让它与 if (queueType == "admin") @attribute [Authorize(Roles = Admin)]
一起工作,但我会尝试更整洁的东西以上是关于Blazor 组件动态授权的主要内容,如果未能解决你的问题,请参考以下文章
C#:如何在 Blazor Wasm 托管中将动态 Razor 组件从服务器发送到客户端?
如果在foreach循环下动态生成Textarea不止一次,如何在Razor(blazor)组件中获取Textarea值