Authorize 属性适合基于 Action 进行一些访问控制,但假设我在布局中有一些 UI 元素,除非用户授权,否则应注意输出。
我可以在 ViewBag 中设置一些 bool 值,但我认为这不是一个好的解决方案。
Layout.cshtml 中的某处:
@if (ViewBag.IsAuthorized)
{
<li>@Html.ActionLink("Index", "Admin")</li>
}
如果有更好的解决方案请告诉我。 谢谢。
最佳答案
使用WebPageRenderingBase.User
目的;假设您之前已将用户设置到 HttpContext 或 Controller 上(您确实应该这样做)。由于您使用的是 Authorize
属性,我认为必须有一个 User
- 所以希望以下内容能够正常工作。
可以在 Razor 中轻松访问此用户
:
@User.Identity.Name
将输出当前用户的名称。因此,仅在用户通过身份验证时运行的 if
block 将是:
@if(User.Identity.IsAuthenticated)
{
Hello
}
如果用户通过身份验证,则输出“Hello”
。
感谢下面的 James 提醒我,您可以从 User
对象中检查 IsAuthenticated
- 我最初找不到它 - 但后来想起它在 >身份
!
关于c# - 如何在 View 布局中处理授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11307591/