在 Blazor 中基于订阅层处理用户功能的方法是什么?

What could be the ways to handle user features based on subscription tiers in Blazor?

我正在考虑如何根据用户所属的订阅层很好地处理 parts/pages/features Blazor WebApp。

首先想到的是 <AuthorizeView> 的本机用法,其中 Roles 作为主要区别符(因此除了正常的 "user" 角色外,它还可以与 "professional""business""enterprise".

但我想知道:还有其他选择吗?

我会 100% 使用角色。你可以给一个人多个角色,所以你可以做层级,甚至是组件成员:“解锁 X 页面,解锁 Y 功能”

我建议您对 Blazor 使用更新的、推荐的、基于策略的授权。基于角色的授权在 Asp.Net 中很流行,现在已经过时了。它在 .NET Core 中启用主要是出于兼容性原因。但即使是基于角色的授权,在 .NET Core 中,也是通过声明实现的。

方法是基于策略的授权。它比基于角色的授权更容易管理……您可以轻松地将它与 AuthorizeView 组件和授权属性集成。 Role-based 授权还有其他问题,它要求很高,需要您编写代码,例如,Blazor 希望获得如下角色列表: Authorize[Roles="role1, role2, role3"] ,而身份服务器发送一个由三个角色组成的声明。因此,您需要提取角色并以列表的形式将其提供给 Blazor。这需要大量的工作和知识。好的...,我不会再混淆你了。忘记角色吧。