Asp.net mvc 5 identity 2.0 mvc5的按钮权限

Asp.net mvc 5 identity 2.0 mvc5的按钮权限,asp.net-mvc-5,authorization,asp.net-identity,Asp.net Mvc 5,Authorization,Asp.net Identity,我已经为我的mvc5项目实现了默认标识2.0。如何禁用呈现partialview(例如:Create partialview)的操作链接,以限制未经授权的用户访问该部分视图 我可以将authorization属性放在save操作方法上。但是我想通过禁用呈现该部分视图的操作链接来限制对该部分视图的访问。为了进一步说明我的问题,我将代码放在下面 这是保存操作方法 CustomAuthorize(Roles = "Admin")] public ActionResult Save(Pr

我已经为我的mvc5项目实现了默认标识2.0。如何禁用呈现partialview(例如:Create partialview)的操作链接,以限制未经授权的用户访问该部分视图

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

这是保存操作方法

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

我怎样才能做到这一点。谢谢你的帮助。提前谢谢

您可以使用UserManager.IsInRole(userId,“role”)检查角色,其中UserManager是HttpContext.Current.GetOwinContext().GetUserManager()。您可能希望创建一个帮助器方法,使其更易于访问

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

因此,您的代码最终会看起来像:

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

谢谢。。你能给我举个例子来解释一下吗?或者提供一个链接。因为我不知道该怎么做。请引导我..@Steve Greene,谢谢。。我要学习它。如果我有任何问题,我会问你的。@Steve Greene,非常感谢。User.IsInRole(“/”)在我的视图中运行良好。但我还有一个问题。如果我必须检查许多角色,那么我必须这样做@if(User.IsInRole(“Admin”)| | User.IsInRole(“Manager”)| |//)。我怎样才能避免这么长时间。你能给我一个解决方案吗?有几个选择。如果您有一个常用的组,您可以创建一个助手函数,如“IsManager”“HasAdminAccess”,然后在那里进行检查:return User.IsInRole(“Admin”)| User.IsInRole(“Manager”)|。。那么视图代码的控制器将是@if(SecurityHelper.IsManager())。。。如果组的数量很大,并且您将以不同的组合检查它们,那么我将创建一个扩展方法,如下面的回答所述:
@if (User.IsInRole("Admin"))
{
    @Html.ActionLink...
}