2013-07-05 71 views
1

我目前正在開發一個小型的簡單項目。我有存儲在數據庫中,像這樣的用戶列表:允許用戶根據他們的Windows域登錄查看網頁部分

Id, FirstName, LastName, PhoneNo, DomainAC 

我都顯示在一個ASP.NET網頁信息和我不確定我怎麼能現在進步。我現在想:

  • 測試表的Domain Account領域對 當前用戶的Windows域登錄數據庫。
  • 只有當他們是同一用戶時,才允許他們編輯他們的詳細信息。
  • 確保這是安全的。

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.Employees>>" %> 
    
    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    
        Index 
    
    </asp:Content> 
    
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    
        <h2>Index</h2> 
    
        <table> 
    
         <tr> 
    
          <th></th> 
    
          <th> 
    
           Id 
    
          </th> 
    
          <th> 
    
           FirstName 
    
          </th> 
    
          <th> 
    
           Last Name 
    
          </th> 
    
          <th> 
    
           Phone No. 
    
          </th> 
    
          <th> 
    
           Domain A/C 
    
          </th> 
    
         </tr> 
    
        <% foreach (var item in Model) { %> 
    
    
    
         <tr> 
    
          <td> 
    
           <%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> | 
    
           <%= Html.ActionLink("Details", "Details", new { id=item.Id })%> 
    
          </td> 
    
          <td> 
    
           <%= Html.Encode(item.Id) %> 
    
          </td> 
    
          <td> 
    
           <%= Html.Encode(item.FirstName) %> 
    
          </td> 
    
          <td> 
    
           <%= Html.Encode(item.LastName) %> 
    
          </td> 
    
          <td> 
    
           <%= Html.Encode(item.PhoneNo) %> 
    
          </td> 
    
          <td> 
    
           <%= Html.Encode(item.DomainAC) %> 
    
          </td> 
         </tr> 
    
    
    
        <% } %> 
    
        </table> 
    
        <p> 
    
         <%= Html.ActionLink("Create New", "Create") %> 
    
        </p> 
    
    </asp:Content> 
    

如何我現在可以讓這個只有上面的「編輯」功能的工作原理,如果域的A/C您當前的登錄匹配,除非你登錄的用戶「管理員」,那麼你可以編輯一切。

非常感謝。

回答

1

西蒙,

您標記與asp.net-MVC中的問題,所以我會給基於這樣一個簡單的例子。

在您的控制器中,您可以修飾整個控制器,也可以修飾Authorize屬性。這意味着您可以明確允許特定Roles內的用戶訪問該功能。

通過一個簡單的例子來說:

[Authorize(Roles = "AdminRole, CreditAdvisorRole")] 
public ActionResult Edit() 
{ 
    var viewModel = _shopService.ShopIndex(); 
    return View(viewModel); 
} 

所以,這個例子將只允許在「AdminRole」和「CreditAdvisorRole」的角色定義的用戶訪問該功能。這當然是內在的行爲,並且在某些時候,你將會遇到這種方法的侷限性。此時,您可以繼續並在AuthorizeAttribute上創建自己的覆蓋。另外,由於您沒有使用Forms身份驗證,您將不得不探索更廣泛的選項,但重寫可能能夠指導您在該路徑上(通過活動目錄重新獲取信息並應用類似的基於角色的邏輯)。

這裏有幾個很好的例子。這一次在particulat把我看中的(見JohnnyO的答案):

Non-string role names in ASP.NET MVC?

享受..

+0

感謝這個;這讓我開始了,現在我可以在接下來的幾個小時裏提出幾個更具體的問題! –

+0

很高興已經開闢了幾個阿旺斯西蒙。將檢查你未來的問題...... ciao ---> –

相關問題