2017-02-20 154 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

它正在數據庫中檢查當前用戶的特定角色名稱。你可以調試它,看看會發生什麼。要測試它,您可以從控制器向用戶添加角色或從數據庫手動添加角色。 –

相關問題