Có nhiều phương pháp xác thực người dùng như Windows Authentication, Forms Authentication. Ở phần này chỉ giới thiê ̣u phương pháp xác thực người dùng dựa trên Forms (dùng C#). Mục đích của hướng dẫn này là giảng giải cách dùng Forms Authentication để yêu cầu bảo mâ ̣t bằng password cho các Views . Sử du ̣ng Website Administration Tool ta ̣o người dùng và phân quyền nhóm người dùng, ngăn chă ̣n những người dùng trái phép.
1.1 Tạo người dùng mặc định với ASP.NET MVC Application
Mặc định khi ứng dụng được tạo sẽ có sẵn một Controllers có tên là AccountController.cs và có sẵn các Views tương ứng ChangePassword.aspx, ChangePasswordSuccess.aspx, Login.aspx, Register.aspx (Figure 1)
Figure 1. Controllers và Views có sẵn để tạo người dùng
Views thể hiện việc register một người dùng mới như sau. (Figure 2)
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application 3
1.2 Quản lý người dùng với công cụ Website Administration Tool
Chọn menu Projects ASP.NET Configuration. Xuất hiện công cu ̣ Website Administration Tool Chọn tab Security (Figure 3)
Figure 3. Công cụ Website Administration Tool
Click vào link Create User để tạo người dùng. Chẳng hạn tạo người dùng tên Lan (Figure 4)
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application 4
1.3 Roles (Phân quyền nhóm người dùng)
Để tạo role trước hết cần phải enable role bằng cách click vào link Enable roles sau đó click vào link Create and Manage roles tạo role có tên Administrators (Figure 5)
Figure 5. Tạo role cho người dùng
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application 5
Figure 6. Tạo người dùng với role Administrators
Bây giờ ta có 2 người dùng mới, người dùng Lan không thuộc roles và người dùng Trang thuộc roles Administrators.
Xây dựng một controllers xem tin tức được bảo mật. Yêu cầu người dùng phải đăng nhập mới có quyền xem. Tùy thuộc đối tượng người dùng nào sẽ được vào các vùng tin tức nào.
BanHang\Controllers\TinTucController.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; namespace BanHang.Controllers {
public class TinTucController : Controller {
public ActionResult Index() {
return View(); }
[Authorize]
public ActionResult NguoiDung() {
return View(); }
[Authorize(Users="Lan")]
public ActionResult NguoiDungCuThe() {
return View(); }
[Authorize(Roles = "Administrators")] public ActionResult NhomNguoiDung() {
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application 6
} } } }
Tạo ra các Views tương ứng với các phương thức của TinTucController.cs: Index.aspx dành cho tất cả người dùng (kể cả người dùng không được xác thực), NguoiDung.aspx chỉ dành cho những người dùng đã được xác thực, NguoiDungCuThe.aspx dành cho người dùng đặc biệt tên là Lan, NhomNguoiDung.aspx dành cho nhóm người dùng thuộc roles Administrators. (Figure 7)
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application 7
Thêm một tab Tin Tức bằng cách tạo một Html.ActionLink trong Views\Shared\Site.Master. (Figure 8)
Figure 8. Views Index trong Controllers\TinTucController.cs