问题描述
确实按照标题,但要提供更多细节:
我的网络应用有多个用户,每个用户都有一组不同的权限,这意味着应用的某些部分对他们不可用,在大多数情况下这很简单,整个部分只是被屏蔽而不显示在全部,但在某些情况下,我希望能够将页面的某个部分包装在一个标签中,如果用户无权查看,将完全隐藏该部分,或者显示“您没有权限使用这个位”部分视图。
我使用的是 .NET Core 3.1 和 Razor Pages。
所以我在想这样的事情:
<html>
<body>
My web page content....
<permission requires="view_invoices">
<h3>Invoices</h3>
.... invoice content....
BUT - if user has not got permission this section is skipped,so is blank,or shows (/Views/Partial/PermissionNotAvailable)
</permission>
</body>
</html>
编辑 - 为清楚起见,我希望能够在假设用户有权查看的情况下编写我的内容,但如果他们没有权限,则它包含在 permissions
标签助手中的事实将具有它被服务器端助手删除或替换。
解决方法
如果您使用 ASP.NET authorization 和 razor 页面,您可以执行以下操作:
@if (User.IsInRole("ViewInvoices")) {
<h3>Invoices</h3>
.... invoice content....
} else {
(/Views/Partial/PermissionNotAvailable)
}
其中 ViewInvoices
是您添加到数据库并分配给某些用户的角色。如果用户没有此角色,则页面的该部分不会返回给客户端。