1. Trang chủ
  2. » Tất cả

18.Chuong 18

58 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 1,48 MB

Nội dung

CHAPTER 18 Bộ lọc Bộ lọc chèn logic thêm vào trình xử lý MVC Framework Họ cung cấp cách đơn giản dễ dàng để thực vấn đề xuyên suốt (cross-cutting Thuật ngữ đề cập đến chức sử dụng tất ứng dụng không phù hợp gọn gàng vào nơi, nơi phá vỡ tách quan tâm mẫu Ví dụ cổ điển mối quan tâm xuyên suốt đăng nhập, ủy quyền, nhớ đệm Trong chương này, cho bạn loại khác lọc mà MVC Framework hỗ trợ, làm để tạo sử dụng lọc tùy chỉnh, làm để kiểm soát việc thi hành án Bảng 18-1 cung cấp tóm tắt cho chương Table 18-1 Chapter Summary Problem Tiêm logic thêm vào chế biến theo yêu cầu Hạn chế phương pháp hành động cho người dùng nhóm cụ thể xác thực yêu cầu Quá trình lỗi thực yêu cầu Tiêm logic có mục đích chung vào q trình xử lý u cầu Kiểm tra thay đổi kết tạo phương pháp hành động Sử dụng lọc mà khơng có thuộc tính Solution Listing Áp dụng lọc để điều khiển 1–8 phương pháp hành động Sử dụng lọc cho phép 9–12 Sử dụng lọc xác thực Sử dụng lọc ngoại lệ Sử dụng lọc hành động 13–19 20–30 31–35 Sử dụng lọc kết 36–41 Sử dụng phương pháp điều khiển tích hợp Xác định lọc áp dụng cho tất Xác định lọc toàn cầu phương pháp hành động ứng dụng Kiểm soát thứ tự mà lọc thực thi Sử dụng tham số thứ tự Ghi đè lọc toàn cầu điều khiển cho Sử dụng lọc viết chèn ( phương pháp hành động override) 42 43–46 47–49 50–54 Chuẩn bị dự án Ví dụ Trong chương tơi tạo dự án MVC gọi lọc cách sử dụng mẫu rỗng, kiểm tra tùy chọn để thêm thư mục core MVC tham khảo Tôi tạo điều khiển chủ có phương pháp hành động thể Liệt kê 18-1 Tôi tập trung vào việc điều khiển chương này, tơi trở giá trị chuỗi từ phương pháp hành động, đối tượng ActionResult Điều có tác dụng gây MVC Framework để gửi giá trị chuỗi trực tiếp vào trình duyệt, cách thơng qua cơng cụ xem Razor Listing 18-1 Nội dung tập tin HomeController.cs using System.Web.Mvc; namespace Filters.Controllers { public class HomeController : Controller { public string Index() { return "This is the Index action on the Home controller"; } } } Ngay sau chương này, chứng minh làm bạn sử dụng tính gọi lọc MVC xác thực, cho cần để thực số xác thực người dùng đơn giản Như tơi giải thích Chương 12, tơi khơng bao gồm tính bảo mật tảng hạ ASP.NET sách này, Apress tự phân phối chương an ninh từ Pro ASP.NET MVC Platform sách tới tơi xuất năm 2014 vậy, để chứng minh xác thực lọc đặc trưng, phần MVC Framework, sử dụng phương pháp tương tự tiếp nhận Chương 12 xác định thông tin người dùng tĩnh file Web.config, thể Liệt kê 18-2 Listing 18-2 Xác định Credentials người dùng tập tin Web.config Tôi xác định hai người sử dụng, sử dụng quản trị, giao cho họ mật khẩu, bí mật, để giữ cho thứ đơn giản Tơi sử dụng hình thức xác nhận lần tơi sử dụng thuộc tính loginUrl để xác định yêu cầu không thẩm định nên chuyển đến / Tài khoản / Đăng nhập URL Trong Liệt kê 18-3, bạn xem nội dung điều khiển tài khoản thêm vào dự án có hành động Login mục tiêu cấu hình định tuyến mặc định Listing 18-3 Nội dung File AccountController.cs using System.Web.Mvc; using System.Web.Security; namespace Filters.Controllers { public class AccountController : Controller { public ActionResult Login() { return View(); } [HttpPost] public ActionResult Login(string username, string password, string returnUrl) { password); bool result = FormsAuthentication.Authenticate(username, "Admin")); if (result) { FormsAuthentication.SetAuthCookie(username, false); return Redirect(returnUrl ?? Url.Action("Index", } else { ModelState.AddModelError("", "Incorrect username or password"); return View(); } } } } Để tạo quan điểm thu thập thông tin ứng viên từ người sử dụng, tạo Views /Shared Folder kích chuột phải vào Chọn Thêm MVC Xem trang (Razor), đặt tên Login.cshtml nhấp vào nút OK để tạo xem Chỉnh sửa điểm để phù hợp với nội dung hiển thị Liệt kê 18-4 Lưu ý tạo nhìn chia sẻ tơi có thêm điều khiển xác thực thứ hai sau chương muốn sử dụng lại xem Listing 18-4 Nội dung File Login.cshtml @{ Layout = null; } @using (Html.BeginForm()) { @Html.ValidationSummary()

Username:

Password:

} Thiết lập URL bắt đầu kiểm thử ứng dụng Như với tất dự án ví dụ, dùng Visual Studio để bắt đầu với URL gốc cho ứng dụng đoán URL dựa tập tin chỉnh sửa Chọn lọc Properties từ menu Project Studio Visual, chuyển sang tab Web kiểm tra tùy chọn trang cụ thể phần Bắt đầu hành động Bạn không cần phải cung cấp giá trị Chỉ cần kiểm tra tùy chọn đủ Nếu bạn bắt đầu ứng dụng ví dụ, bạn nhận phản ứng thể hình 18-1 Figure 18-1 Running the example application Sử dụng lọc Bạn thấy ví dụ lọc Chương 12, áp dụng ủy quyền cho phương pháp hành động điều khiển quản trị SportsStore Tôi muốn phương pháp hành động sử dụng người dùng xác thực thân, trình bày cho tơi với lựa chọn phương pháp tiếp cận Tơi kiểm tra tình trạng ủy quyền yêu cầu phương pháp hành động, thể Liệt kê 18-5 Listing 18-5 Kiểm tra cách rõ ràng phương pháp Authorization Action namespace SportsStore.WebUI.Controllers { public class AdminController : Controller { // instance variables and constructor public ViewResult Index() { if (!Request.IsAuthenticated) { FormsAuthentication.RedirectToLoginPage(); } // rest of action method } public ViewResult Create() { if (!Request.IsAuthenticated) { FormsAuthentication.RedirectToLoginPage(); } // rest of action method } public ViewResult Edit(int productId) { if (!Request.IsAuthenticated) { FormsAuthentication.RedirectToLoginPage(); } // rest of action method } // other action methods } } You can see that there is a lot of repetition in this approach, which is why I decided to use a filter instead, as shown in Listing 18-6 Listing 18-6 Applying a Filter namespace SportsStore.WebUI.Controllers { [Authorize] public class AdminController : Controller { // instance variables and constructor public ViewResult Index() { // rest of action method } public ViewResult Create() { // rest of action method } public ViewResult Edit(int productId) { // rest of action method } // other action methods } } Bộ lọc thuộc tính NET mà thêm bước bổ sung cho đường ống xử lý yêu cầu Tôi sử dụng lọc Authorize Liệt kê 18 6, có tác dụng tương tự tất kiểm tra trùng lặp Liệt kê 18-5 Giới thiệu loại Lọc Các MVC Framework hỗ trợ năm loại khác lọc Mỗi phép bạn giới thiệu logic điểm khác trình xử lý yêu cầu Các loại lọc mô tả Bảng 18-2 Table 18-2 MVC Framework Filter Types Trước MVC Framework gọi hành động, kiểm tra định nghĩa phương pháp để xem có thuộc tính mà thực giao diện liệt kê Bảng 18-2 Nếu vậy, thời điểm thích hợp q trình xử lý u cầu, phương pháp xác định giao diện gọi Khung bao gồm lớp thuộc tính mặc định mà thực giao diện lọc Tôi cho bạn thấy làm để sử dụng lớp mặc định sau chương Mẹo MVC giới thiệu giao diện mới, IoverrideFilter, mà mô tả Overriding lọc phần sau chương Lớp ActionFilterAttribute thực hai giao diện IActionFilter IResultFilter Lớp trừu tượng, mà buộc bạn phải cung cấp thực Các lớp AuthorizeAttribute HandleErrorAttribute có tính hữu ích sử dụng mà không cần tạo lớp dẫn xuất Áp dụng lọc để điều khiển phương pháp hành động Bộ lọc áp dụng cho phương pháp hành động cá nhân toàn điều khiển Trong Liệt kê 186, áp dụng lọc để Authorize lớp AdminController, có tác dụng tương tự áp dụng vào phương pháp hành động điều khiển, Ví dụ 18-7 Listing 18-7 Applying a Filter to Action Methods Individually namespace SportsStore.WebUI.Controllers { public class AdminController : Controller { // instance variables and constructor [Authorize] public ViewResult Index() { // rest of action method } [Authorize] public ViewResult Create() { // rest of action method } // other action methods } } Bạn áp dụng nhiều lọc pha trộn kết hợp mức độ mà chúng áp dụng, là, cho dù chúng áp dụng để điều khiển phương pháp hành động cá nhân Liệt kê 18-8 cho thấy ba lọc khác sử dụng Listing 18-8 Applying Multiple Filters in a Controller Class [Authorize(Roles="trader")] // applies to all actions public class ExampleController : Controller { [ShowMessage] [OutputCache(Duration=60)] // public ActionResult Index() { // action method body } // applies to just this action applies to just this action } Một số lọc bảng liệt kê lấy thông số Tôi cho bạn thấy làm công việc mô tả loại khác lọc Lưu ý Nếu bạn xác định lớp sở tùy chỉnh cho điều khiển bạn, lọc áp dụng cho lớp sở ảnh hưởng đến lớp học có nguồn gốc Sử dụng Bộ lọc Authorization/ cho phép Bộ lọc cho phép chạy sau lọc xác thực, trước lọc hành động trước phương pháp hành động gọi Như tên cho thấy, lọc thực thi sách cấp phép bạn, đảm bảo phương pháp hành động gọi người sử dụng phê duyệt Có mối quan hệ có phần liên quan việc xác thực ủy quyền lọc dễ dàng để g iải thích bạn hiểu cách ủy quyền lọc làm việc Tơi giải thích mối quan hệ Sử dụng Bộ lọc xác thực phần sau chương Bộ lọc ủy quyền thực giao diện IAuthorizationFilter, thể Liệt kê 18-9 Listing 18-9 The IAuthorizationFilter Interface namespace System.Web.Mvc { public interface IAuthorizationFilter { 10 ... thông tin cần thiết Trong Liệt kê 18- 18, bạn nhìn thấy tơi kết hợp GoogleAuth Ủy quyền cho lọc để hạn chế truy cập vào hành động Danh sách điều khiển Home Listing 18- 18 Combining Authentication and... toàn điều khiển Trong Liệt kê 186 , áp dụng lọc để Authorize lớp AdminController, có tác dụng tương tự áp dụng vào phương pháp hành động điều khiển, Ví dụ 18- 7 Listing 18- 7 Applying a Filter to Action... lọc mô tả Bảng 18- 2 Table 18- 2 MVC Framework Filter Types Trước MVC Framework gọi hành động, kiểm tra định nghĩa phương pháp để xem có thuộc tính mà thực giao diện liệt kê Bảng 18- 2 Nếu vậy, thời

Ngày đăng: 23/10/2019, 21:15

w