加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何避免重复授权代码逻辑

发布时间:2020-12-16 06:58:20 所属栏目:asp.Net 来源:网络整理
导读:我编写了一个源自 System.Web.Mvc.AuthorizeAttribute的自定义授权属性.我正在从我的控制器中成功使用它来限制对某些功能的访问. public class ArticleController : Controller{ [CustomAuthorize(Role.Administrator)] public ActionResult Delete(int id)
我编写了一个源自 System.Web.Mvc.AuthorizeAttribute的自定义授权属性.我正在从我的控制器中成功使用它来限制对某些功能的访问.

public class ArticleController : Controller
{
    [CustomAuthorize(Role.Administrator)]
    public ActionResult Delete(int id)
    {
       // ...
    }
}

这很好.现在我想根据相同的授权逻辑显示或隐藏HTML元素.例如,在我的视图“文章”中,如果用户不是管理员,我想隐藏操作按钮“删除”.我写过类似的东西:

<ul id="menu">
   <li>@if (User.IsInRole(Role.Administrator)) { 
          @Html.ActionLink("Delete","Delete","Article",new { id = article.ID },null)
       } </li>
</ul>

它工作正常,但它创建了代码逻辑重复,因为我需要指定两次必要的信用来执行操作:

>在控制器中阻止或允许操作.
>在视图中显示或隐藏操作链接.

避免这种重复的最佳方法是什么?有没有办法从视图中重用我的自定义授权属性?

解决方法

自定义助手应该是最好的选择,例如:

@Html.SecureActionLink("Delete","Article")

此帮助程序将检查某种服务以查看当前用户/角色是否具有此链接的权限.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读