2011-12-27 41 views
5

Tôi đang cố tạo một menu sắp xếp khác nhau tùy thuộc vào vai trò của người dùng.Tạo các menu trong thời gian chạy tùy thuộc vào vai trò người dùng

Ví dụ, nếu người dùng là vai trò quản lý, menu hiển thị sẽ là:

  • AdminPane

  • RegisterUser

  • UserRoles

và nếu người dùng là vai trò cơ bản:

  • ViewProducts

  • makeOrder

Đây là một ví dụ bố trí.

Tôi sẽ đánh giá cao một số trợ giúp khi tôi tìm kiếm trên mạng trong 2 giờ mà không có may mắn.

Cảm ơn.

+0

là này một ứng dụng web ASP.NET ..? nếu như vậy sử dụng trang chính và thiết lập khả năng hiển thị của các tab hoặc trình đơn từ đó tôi đã sử dụng phương pháp này nhiều lần khi xác thực nhóm người dùng vai trò ontop của ActiveDirectory – MethodMan

+0

Có rất ít thông tin ở đây. Chính xác thì "menu" trong trường hợp này là gì? "Menu" hiện tại của bạn được tạo ra như thế nào? Bạn chỉ cần xây dựng chúng trong một trang chủ? Có thể có cả hai menu trên trang chính và chỉ hiển thị/ẩn chúng với một điều kiện kiểm tra vai trò của người dùng đã đăng nhập? – David

+0

Im xin lỗi nhưng tôi không hiểu những gì bạn vừa nói ... và có nó là một ứng dụng web asp.net, tôi sẽ làm điều đó như một điều khiển người dùng và kéo nó trong trang chủ .. – Mazda

Trả lời

4

Những gì bạn muốn làm là trong web.config của bạn có một phần trong phần system.web của bạn, như vậy:

<siteMap> 
     <providers> 
      <add name="anonymous" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourAnonymouse.sitemap"/> 
      <add name="user" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourNormalUser.sitemap"/> 
      <add name="admin" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourAdmin.sitemap"/> 
     </providers> 
    </siteMap> 

Sau đó, với điều này, bạn sẽ có ba nhà cung cấp bản đồ trang web xác định, mỗi chỉ vào sitemap file tương ứng của họ đối với đơn cần thiết mà bạn đang tìm kiếm cho từng loại người dùng.

Sau đó, bạn sẽ có một SiteMapDataSource mà điều khiển máy chủ trình đơn của bạn sẽ sử dụng. Điều này rất có thể sẽ tồn tại trên trang cái của bạn. Trên Page_Load() lại trang chủ của bạn, bạn sẽ có logic để tự động và lập trình thiết lập các nguồn dữ liệu sitemap kiểm soát SiteMapDataSource của bạn:

if (HttpContext.Current.User.Identity.IsAuthenticated) 
    { 
     if (HttpContext.Current.User.IsInRole("Admin")) 
      SiteMapDataSource1.Provider = SiteMap.Providers("admin"); 
     else 
      SiteMapDataSource1.Provider = SiteMap.Providers("user"); 
    } 
    else 
     SiteMapDataSource1.Provider = SiteMap.Providers("anonymous"); 
0

Tất cả điều này có thể được thực hiện bằng cách sử dụng MasterPages và Postback hoặc tải trang ban đầu bạn có thể tạo một biến phiên lưu trữ các giá trị hoặc viết một cái gì đó chống lại ActiveDirectory khá đơn giản ..

Các vấn đề liên quan