c# - 如何在 View 布局中处理授权

标签 c# asp.net-mvc-3 view acl

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/

相关文章:

javascript - 主干 View 多次触发事件委托(delegate)

java - 如何在Android Studio中使用View Parameter调用方法

c# - Windows Xp 上的 Microsoft.Windows.ActCtx

ajax - 在使用 MVC 3 和 jQuery 进行 AJAX 和动态创建之后,元素未通过不显眼的验证进行验证

c# - 解析 jQuery 网格中的上下文变量和模式时出错

c# - 使用 javascript 删除 webgrid 行?

react-native - 带有向上箭头三角形的背景边框 View | react 原生

c# - 仅在唯一时返回随机数

c# - Windows Phone 8 推送通知空 channel uri

c# - 从 C++ 到 C# .Net Compact Framework 的结构转换问题