我知道在控制器中,您可以[Authorize("policyName")]毫无问题地编写,但有没有办法在视图中使用策略?我不想User.IsInRole(...)每次都想要授权一些HTML.
编辑:
这是一些代码
Startup.cs - 政策声明
services.AddAuthorization(options =>
{
options.AddPolicy("testPolicy", policy =>
{
policy.RequireAuthenticatedUser()
.RequireRole("RoleOne", "RoleTwo", "RoleThree")
.RequireClaim(ClaimTypes.Email);
});
});
Run Code Online (Sandbox Code Playgroud)
管理控制器
[Authorize("testPolicy")]
public class AdminController : Controller
{
public IActionResult Index()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
导航HTML
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-controller="Home" asp-action="Index">Home</a></li>
<!-- I want to implement my policy here. -->
@if (User.IsInRole("..."))
{
<li><a asp-controller="Admin" asp-action="Index">Admin</a></li>
}
</ul>
@await Html.PartialAsync("_LoginPartial")
</div>
</div>
Run Code Online (Sandbox Code Playgroud) asp.net asp.net-mvc authorization asp.net-core-mvc asp.net-core