2013-08-20 23 views
11

Vì vậy, điều này có thể là một câu hỏi ngớ ngẩn, nhưng làm cách nào để hiển thị liên kết chỉ cho người dùng quản trị?Ẩn các liên kết khỏi các vai trò nhất định trong ASP.NET MVC5

Giả sử một người dùng bình thường nhìn thấy các liên kết sau đây:
Trang chủ/Giới thiệu/Liên

Và một tài khoản admin thấy các liên kết sau đây:
Trang chủ/Giới thiệu/Liên hệ/Quản trị

tôi đã cố gắng hạn chế trong bộ điều khiển và liên kết bộ điều khiển trên menu. Nhưng nó vẫn hiển thị liên kết cho mọi người, không cho phép truy cập vào bất kỳ ai nhưng quản trị viên

Chế độ xem có bị quá tải không?

+0

Nó không chỉ ẩn, bạn phải đánh giá vai trò của người dùng đăng nhập ... có rất nhiều câu trả lời cho loại question –

Trả lời

30

Tùy thuộc vào loại thành viên/nhà cung cấp người dùng bạn đang sử dụng, bạn chỉ có thể kiểm tra trực tiếp từ Chế độ xem nếu người dùng đăng nhập và trong vai trò cụ thể.

Vì vậy, bạn sẽ kết thúc với một cái gì đó như;

@Html.ActionLink("Index", "Home") 
@Html.ActionLink("About", "Home") 
@Html.ActionLink("Contact", "Home") 
@if (User.Identity.IsAuthenticated){ 
    if (User.IsInRole("Admin")){ 
     @Html.ActionLink("Admin", "AdminController")   
    } 
} 

Và hãy nhớ để thêm [Authorize] thuộc tính phương pháp Admin hành động của bạn:

[Authorize(Roles="Admin")] 
public ActionResult Admin() 
{ 
    // ... 
    return View(); 
} 
+1

Thực hành tốt nhất (hoặc có lẽ do sự rõ ràng) để kiểm tra xem người dùng có được xác thực ** và ** nếu họ đang ở trong một vai trò nhất định không? Cách tôi hình dung, họ sẽ không có bất kỳ vai trò nào trừ khi họ nói cho họ biết họ là ai, điều này ngụ ý xác thực trước. Xin lưu ý rằng tôi ** không đặt câu hỏi ** lựa chọn nhưng ** chỉ tự hỏi **. Kỹ năng bảo mật của tôi giống như chim cánh cụt đang bay - thấy những người khác làm điều đó, không bao giờ tự làm. (Sự khác biệt, tôi sử dụng các ngày lễ để thay đổi tham vọng trạng thái đó, không giống như các chú chim cánh cụt lười biếng, hihi.) –

+0

Thuộc tính 'Authorize' sẽ kiểm tra xem người dùng có được xác thực theo mặc định hay không và bạn có thể tùy ý thêm vào các vai trò. –

+1

Ồ, tôi nhận ra điều đó không rõ ràng (dường như, đọc hiểu không phải là mặt mạnh của bạn, hehe). Tôi đang đề cập đến dòng 4 và 5 trong mẫu ** đầu tiên ** (tệp CSHTML, đánh dấu Razor). –

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