2017-02-20 118 views
0

我正在开发一个asp.net mvc应用程序。我需要能够根据用户名&角色限制用户在特定页面上可以看到的内容。用户名将以DOMAIN \ Username的格式成为Windows身份验证名称,并将分配给一个或多个将驻留在SQL数据库中的角色。asp.net mvc - 根据用户ID和角色显示内容

基于上述情况,我需要一种方式让用户只能看到与他们角色相关的信息。例如,在下图中,有3个图像代表用户可能访问的潜在应用程序。其中两个是绿色,另一个是蓝色。考虑这些是ROLEs。我如何确保仅属于蓝色的用户无法看到两个绿色。 enter image description here

在右上角的用户名被经由在剃刀的@User.Identity.Name功能检测。我想这会像检测到当前用户那样简单,然后查询数据库中的角色。那么我们将如何限制基于这些角色的内容?

奖金问题,我想要一个管理组件,允许具有管理员角色的人通过查询组织帐户来分配新用户角色。有没有简单的方法来提供搜索功能?

HTML(索引视图)

<div class="row"> 
    <div class="col-md-4 portfolio-item"> 
     <a href="#"> 
      <img class="img-responsive" src="http://placehold.it/700x400" alt=""> 
     </a> 
     <h3> 
      <a href="#">Project Name</a> 
     </h3> 
     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam viverra euismod odio, gravida pellentesque urna varius vitae.</p> 
    </div> 
    <div class="col-md-4 portfolio-item"> 
     <a href="#"> 
      <img class="img-responsive" src="http://placehold.it/700x400" alt=""> 
     </a> 
     <h3> 
      <a href="#">Project Name</a> 
     </h3> 
     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam viverra euismod odio, gravida pellentesque urna varius vitae.</p> 
    </div> 
</div> 

它看起来像下面... enter image description here

共享_layout

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>@ViewBag.Title - blah blah blah</title> 
    @Styles.Render("~/Content/css") 
    @Scripts.Render("~/bundles/modernizr") 
</head> 
<body> 
    <div class="navbar"> 
     <div class="container"> 
      <div class="navbar-header"> 
       <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
       </button> 
       @Html.ActionLink("IHS Data Manager", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) 
     </div> 
     <div class="navbar-collapse collapse"> 
      <ul class="nav navbar-nav"> 
       <li>@Html.ActionLink("Home", "Index", "Home")</li> 
       <li>@Html.ActionLink("About", "About", "Home")</li> 
       <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
      </ul> 
      <p class="nav navbar-text navbar-right">@User.Identity.Name</p> 
     </div> 
    </div> 
</div> 
<div class="container body-content"> 
    @RenderBody() 
    <hr /> 
    <footer>blah blah blahMorningStar Partners LP</p> 
    </footer> 
</div> 

    @Scripts.Render("~/bundles/IDM") 

    @RenderSection("scripts", required: false) 
</body> 
</html> 

数据模型 enter image description here

+0

用户如何登录到您的应用程序?你能显示认证和授权码吗? – Win

+0

从长远来看,切换到声明和权限模型可能会更好,并检查用户是否有权执行某些操作或查看某些数据。 – Tom

回答

1

关于第一个问题是如何将用户能够或不能够看到基于您可以使用类似下面的特定角色的具体内容 - 有关管理角色

if (User.IsInRole("admin")) 
{ 
    <div class="col-md-4 portfolio-item"> 
     <a href="#"> 
      <img class="img-responsive" src="http://placehold.it/700x400" alt=""> 
     </a> 
     <h3> 
      <a href="#">Project Name</a> 
     </h3> 
     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam viverra euismod odio, gravida pellentesque urna varius vitae.</p> 
    </div> 
} 

如果这是不完全是你需要让我知道的,所以我可以给你任何其他的想法!

+0

这可能是我要找的。 “IsInRole”在哪里检查?这个配置是什么样的。 – LCaraway

+0

它正在数据库中检查当前用户的特定角色名称。你可以调试它,看看会发生什么。要测试它,您可以从控制器向用户添加角色或从数据库手动添加角色。 –

相关问题