Ngôn ngữ ASP.NET - Cấu hình Membership

Phân quyền Website với Membership

Nhu cầu bảo mật trong các ứng dụng web hiện nay rất lớn. Trước đây khi xây dựng các ứng dụng web lập trình viên thường phải tự viết nên các framework bảo mật: quản lý người dùng, vai trò, quyền hạn riêng của mình, điều này rất tốn công sức và đôi khi để lộ ra những lỗ hổng bảo mật cho hệ thống nếu không design, code, test cẩn thận.

Ngày nay hiếm khi chúng ta phải thực hiện điều này bởi hầu hết các framework đều đã hỗ trợ tính năng này một cách mặc định. Với .NET framework đó chính là Membership Provider (ASP.NET 2.0), SimpleMembership (ASP.NET 4.5), Universal Provider (ASP.NET 4.0), Identity (ASP.NET 4.5.1).

Nếu bạn viết các ứng dụng web chỉ sử dụng SQL Server để lưu trữ thông tin người dùng và không yêu cầu quá phức tạp về mở rộng như hỗ trợ OAuth đăng nhập với Facebook, Google… hoặc lưu trữ thông tin người dùng trên Cloud như Azure… thì hoàn toàn có thể sử dụng Membership Provider đã có từ .NET 2.0.

Thực hiện các bước phân quyền trong ASP.NET

Bước 1: Tạo Sơ đồ trang Web có dạng sau:

Home.aspx liên kết đền 2 trang đó là Admin.aspx và Index.aspx (chưa phân quyền thì chúng ta có thể vào cả 2 trang này mà không cần đăng nhập)

Trang Login.aspx thiết kế như sau:

Trang Admin.aspx thiết kế như sau:

Trang Index.aspx thiết kế như sau:

Bước 2: Cấu hình  ASP.NET:

Như bạn đã nhận thấy, tùy chọn để chọn "ASP.Net Web Configuration Manager" không còn trong Visual Studio 2013 Preview. Điều này là do việc loại bỏ các máy chủ trong Visual Studio (hoặc Cassini) . Tuy nhiên, Chúng ta có thể cấu hình membership theo các bước sau. Lưu ý rằng các hướng dẫn này chỉ hoạt động cho các trang web đang chạy trên. NET Framework 4.0 trở lên.

  1. Mở Command Prompt (không phải là quyền quản trị  (administrator)
  2. Chuyển  đến thư mục mà IIS Express được cài đặt trên máy của bạn, thông thường là  C:\Program Files\IIS Express. Sau đó enter cho kết quả sau:
  3. Trong thư mục  C:\Program Files\IIS Express copy lệnh sau:
    iisexpress.exe /path:c:\windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles /vpath:"/asp.netwebadminfiles" /port:12345 /clr:4.0 /ntlm
    Chú ý port hiện tại đang sử dụng 12345, bạn có thể đổi port khác


    Sau đó enter cho kết quả sau:


     
  4. Mở trình duyệt và copy URL sau:
    http://localhost:12345/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=[appPath]&applicationUrl=/

     Lưu ý: appPath là đường dẫn tuyệt đối đến thư mục chứa project trong VS. Trong ví dụ project tôi chứa D:\PhanQuyen_NguyenHuuVinh

    Ví dụ: 

    http://localhost:12345/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=D:\PhanQuyen_NguyenHuuVinh&applicationUrl=/

Bước 3: Chạy link trong ví dụ trên hiện thị màn hình:

Nhập username và password với quyền đăng nhập window sau đó xuất hiện màn hình sau:

Bước 4: Chọn tab Security , click vào link Use the security Setup Wizard to configure security step by step, sau đó click vào nút Next.

Bước 5 : Tại trang Select Access Method, chọn Internet option

Bước 6: Nhập Thông tin cho việc lưu trữ dữ liệu ở trang Advanced provider settings. Mặc định thông tin Membership được lưu trữ trong cơ sở dữ liệu  Microsoft SQL Server Express

Bước 7: Click Next , Trang kế tiếp hiện thị một nút checkbox  Enable roles for this Web site. Tại đây ta có thể thực hiện quyền quản trị truy cập website đối với người sử dụng thuộc role một cách nhanh chóng.  Chọn checkbox Enable roles for this Web site và chọn để xuất hiện trang định nghĩa Role, chọn Next. Tại trang Create New Role ta thêm một nhóm quản trị, click Add Role và chọn Next.

Bước 8: Ở bước này ta tạo User mới. Để tạo User mới ta nhập đầy đủ thông tin, sau đó click vào nút Create User. Ta không nhất tạo đầu đủ User ở bước này bởi vì ta có giao diện dễ sử dụng cho User.


Nếu tạo tiếp thì nhấn nút Continue và tạo các user sau:

  • hongnhan, pass: @hongnhan
  • vinh, pass: @hongnhan
  • teo, pass: @hongnhan

Bước 9: Ở bước này Add New Access Rules. Ở đây ta có thể thiết lập người sử dụng sẽ được truy cập vào từng vùng của Website. Trong ví dụ này ta thiết lập 2 quy tắc. Các quy tắc sẽ được áp dụng cho từng thư mục Website. Chú ý thư mục đó phải được chọn.

  • Mặc định Rule cho phép tất cả User được truy cập vào Website
  • Xây dựng Rule cho thư mục Admin và Pages. Chọn thư mục Admin và Pages xây dựng các Rules trên thư mục
  1. Cho phép Role Admin truy cập vào thư mục Admin. Cấm tất cả User truy cập vào thư mục Admin 

Cấm tất cả User truy cập vào thư mục Admin 

 

2. Cho phép Role Admin và KhachHang truy cập vào thư mục Pages. Cấm tất cả User truy cập vào thư mục Pages.

Cấm tất cả User truy cập vào thư mục Pages.

Click vào nút Add This Rule danh sách các rule mới sẽ hiển thị sau:

Bước 9: Hoàn tất

Sau khi tạo xong, ta có thể chỉnh sửa Role của các User như sau

:

Kích hoạt vai trò cho user

Thế là hoàn tất việc cấu hình. Bây giờ chạy chương trình load Home.aspx và click vào liên kết Index.aspx sẽ hiện ra:

Đăng nhập nếu dùng tên hongnhan @hongnhan thì vào được trang Index.aspx

Đăng nhập hiepsiit thì vào được trang Index.aspx và trang Admin.aspx

Sau khi phân quyền xong trong cây thư mục web sinh ra ASPNETDB.MDF và có web.config