【问题标题】:action link if authorized操作链接(如果授权)
【发布时间】:2014-12-28 12:35:22
【问题描述】:

我希望仅当用户被授权执行给定操作时才显示操作链接。有没有一种好方法可以在 cshtml 中做到这一点而无需重复授权。没有检查我已经在属性中设置的相同权限。

谢谢

【问题讨论】:

    标签: c# razor model-view-controller authorization


    【解决方案1】:

    您可以将链接存储在数据库中。 并根据用户分配权限。 on view 根据权限建立链接。

    【讨论】:

      【解决方案2】:
       [HttpPost]
          [InitializeSimpleMembership]
          [Authorize(Roles = "YourRole")]        
          public ActionResult Create(Product p)
          {
              ...
          }
      
          @if (User.IsInRole("YourRole"))
          {
              @Html.ActionLink("Create Product", "Create")
          }
      

      【讨论】:

      • 这不适用于 ASP.NET 标识。 IsInRole 抛出异常,它有点过时了。
      • 您是否也将此属性添加到您的控制器中? [初始化SimpleMembership]
      • 过去十年现在有了 ASP.NET 身份。
      【解决方案3】:

      我过去曾使用此辅助函数仅在满足以下条件时才返回输出:

      public static MvcHtmlString If(this MvcHtmlString value, bool evaluation)
      {
           return evaluation ? value : MvcHtmlString.Empty;
      }
      

      所以你可以使用这个:

      @Html.ActionLink("Create New", "Create").If(User.IsInRole("Your Role"))
      

      清晰易读

      【讨论】:

      • 我已经看到了这个答案,并且正在寻找不涉及在两个不同地方重复我的权利的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2022-10-13
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      相关资源
      最近更新 更多