【发布时间】:2021-03-08 23:20:54
【问题描述】:
我已经开发了一些管理功能(实际上是用于审核日志的 EF 逻辑、控制器和 Razor UI),我已将它们打包到 Razor 类库 (RCL) 中并创建了一个 NuGet 包。我希望软件包的用户可以使用此功能,但我希望允许他们控制访问安全性。我通常会用授权属性来装饰控制器,例如:
[Area("MyAuditLogPackage")]
[Authorize(Roles = "Admin")]
public class AuditLogController : Controller
...
但我不想假设客户的安全策略和审核日志是敏感数据。
他们可以从我的控制器中派生出自己的控制器,但原来的 Route 仍然在他们的默认区域映射中。
我怎样才能将这个完全控制权交给包客户端?
【问题讨论】:
-
答案不是为您的软件包用户“写一些文档”吗?
-
没有。好吧,该包将有大量文档:),但我的问题是如何包含控制器,允许他们在他们认为合适的时候保护它,并且不会从我的 RCL 项目中泄漏不安全的控制器?
-
Roles只是一个字符串。重要的是他们有办法提供一个或多个。例如:Roles.All。更好的方法可能是提供一个策略名称,这样他们就可以定义自定义逻辑。他们可以用你的名字注册他们的政策,你的控制器会取走它。
标签: c# asp.net-core razor