Checking login user role in razor page
Solution 1:
@if (Request.IsAuthenticated && User.IsInRole("Administrators"))
{
<div id="sidebar">
<div class="module">
<ul class="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
</div>
<div class="mainContent">
Hello, @User.Identity.Name !
</div>
</div>
}
Solution 2:
For ASP.NET Core Razor Pages
if (User.Identity.IsAuthenticated && User.IsInRole("Administrator"))
Solution 3:
Dave's answer is correct. I would suggest that you consider using a property on your model called IsAdministrator
or CanSeeSidebar
and treat answering that question as domain logic.
The view should work only with the model. Looking at the thread, reading from a database, are the same in respect that they answer domain questions. All those types of questions should be answered before your controller hands the model off to the view.