【问题标题】:Button permission for identity 2.0 mvc5身份 2.0 mvc5 的按钮权限
【发布时间】:2015-11-27 23:43:59
【问题描述】:

我已经为我的 mvc5 项目实现了默认的 identity2.0。如何禁用呈现局部视图(例如:创建局部视图)的操作链接,以限制未经授权的用户对该局部视图的访问。

我可以将授权属性放在保存操作方法上。但我想通过禁用呈现部分视图的操作链接来限制部分视图的访问。为了进一步证明我的问题,我将代码放在下面。

这是保存操作方法

    CustomAuthorize(Roles = "Admin")]
    public ActionResult Save(ProductType producttype)
    {
        if (ModelState.IsValid)
        {
            //
            objContext.SaveChanges();
            return RedirectToAction("vwProductTypeIndex");
        }
    } 

_使用保存按钮创建局部视图

 @Html.BeginForm("Save", "ProductType"))
 {
     //
     <input type="submit" id="btn" value="Save" class="btn btn-success" clientidmode="Static">
 }

我想禁用下面的动作链接(添加新记录),这是一个用 css 装饰的按钮,它呈现上面的局部视图。

@Html.ActionLink("Add New Record", "vwProductTypeIndex", "ProductType", new { A = "New" }, new { Class = "btn btn-primary page-scroll", style = "top:50px; margin-left:168px;width:120px;text-indent:-5px; position:relative;" })

我怎样才能做到这一点。所有帮助表示赞赏。提前致谢!

【问题讨论】:

    标签: asp.net-mvc-5 authorization asp.net-identity


    【解决方案1】:

    您可以使用 UserManager.IsInRole(userId,"Role") 检查角色,其中 UserManager 为 HttpContext.Current.GetOwinContext().GetUserManager()。您可能需要创建一个辅助方法以使其更易于访问。

    现在您可以直接在 Razor 中使用它,也可以在控制器的 Get 端使用它来构建视图模型或 ViewBag 设置。

    所以你的代码最终会看起来像:

    @if (User.IsInRole("Admin"))
    {
        @Html.ActionLink...
    }
    

    【讨论】:

    • 非常感谢。您能否提供一个示例以供您解释或提供链接。因为我不知道如何处理它。请指导我..
    • @ Steve Greene,谢谢.. 我要去研究它。如果我有任何问题,我会问你..
    • @史蒂夫格林,非常感谢。 User.IsInRole("//") 在我看来工作正常。但我还有一个问题。如果我必须检查许多角色,那么我必须这样做。 @if(User.IsInRole("Admin")||User.IsInRole("Manager")||///////).我怎样才能避免这么长。你能给我一个解决方案吗?
    • 有几个选项。如果你有一个常用的组,你可以创建一个辅助函数,如 "IsManager" "HasAdminAccess" 然后在那里进行检查: return User.IsInRole("Admin")||User.IsInRole("Manager")|| ..然后您的视图代码控制器将是@if (SecurityHelper.IsManager())...如果组的数量很大并且您将要以不同的组合检查它们,那么我将创建一个扩展方法为在这个答案中描述:stackoverflow.com/questions/14477757/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2015-01-18
    • 2021-03-10
    • 2012-04-02
    相关资源
    最近更新 更多