身份2.0 mvc5的按钮权限

时间:2015-09-02 12:48:11

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

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

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

这是保存操作方法

    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;" })

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

1 个答案:

答案 0 :(得分:3)

您可以使用UserManager.IsInRole(userId,“Role”)检查角色,其中UserManager是HttpContext.Current.GetOwinContext()。GetUserManager()。您可能想要创建一个帮助方法,以便更容易访问。

现在您可以直接在Razor中使用它,或者您可以在控制器的Get端使用它来构建viewmodel或ViewBag设置。

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

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