Ich weiß in den Controllern, können Sie [Authorize("policyName")]
ohne ein Problem schreiben, aber gibt es eine Möglichkeit, eine Richtlinie in einer Ansicht zu verwenden? Ich würde lieber nicht User.IsInRole(...)
jedes Mal verwenden, wenn ich etwas HTML autorisieren möchte.Kann ich Autorisierungsrichtlinien in einer Ansicht in .NET Core 1.0 MVC verwenden?
Edit:
Hier einige Code
Startup.cs - Politik Erklärung
services.AddAuthorization(options =>
{
options.AddPolicy("testPolicy", policy =>
{
policy.RequireAuthenticatedUser()
.RequireRole("RoleOne", "RoleTwo", "RoleThree")
.RequireClaim(ClaimTypes.Email);
});
});
Admin-Controller
[Authorize("testPolicy")]
public class AdminController : Controller
{
public IActionResult Index()
{
return View();
}
}
Navbar 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>
Ich bin verwirrt darüber, warum Sie das brauchen würden und was genau Sie meinen? Könnten Sie bitte einen Beispielcode in Ihrem Post posten? Sie könnten es einfach im Controller tun und stattdessen zu einer anderen Ansicht umleiten, wenn sie nicht in dieser Rolle waren. –
Nun, in meinem Fall habe ich speziell über die Navbar gesprochen. Ich wollte einen Link [Admin] in der Navigationsleiste hinzufügen, der zu einem Admin-Controller umleitet. Der Controller selbst ist autorisiert mit einer Richtlinie, aber mein Zweck ist rein kosmetischer - nur die Registerkarte [Admin] anzuzeigen, wenn der Benutzer die Richtlinienanforderungen erfüllt, genau wie im Controller – Daath
@MartinMazzaDawson Ich fügte Code zu meinem OP hinzu, wenn das hilft du bist raus. – Daath