Chức năng phân quyền này mình dựa trên phần quyền của AspNet
Đầu tiên các bạn cần chuẩn bị DB (mình phân tích thì sử dụng các bảng sau)
Sau đó các bạn tạo lớp AuthAttribute.cs trong phần Models (ở đâu cũng được)
Lớp này để kiểm tra phân quyền tại các Controller nó giống Authorize
Mình tạo thêm lớp ControllerModel.cs để tiện cho việc truyền dữ liệu từ action qua view.
Tạo action GetController() trong RolesController.cs action này dùng để lấy tất cả những action của MVC. Hiện tại thì cái này đang lấy lên hết tất cả, mọi người có phương pháp nào lấy được theo Areas thì chia sẻ dưới comment nha. Thanks!
Tạo view cho action này, khi chạy view này xong thì dữ liệu sẽ được lưu xuống DB.
Mình tạo thêm lớp AddController trong RolesController.cs để xét Action cho từng phân quyền của chúng ta.
View của AddController
Đây là giao diện khi hoàn thành.
Và cuối cùng chúng ta thụ hường thành quả của mình bằng cách add [AuthAttribute] vào các Controller bạn muốn phân quyền.
OK Cảm ơn các bạn đã xem bài viết. Nếu các bạn có ý kiến hay góp ý cho chức năng tốt hơn xin vui lòng để lại comment.


Thanks admin!. admin cho xin luôn source nữa là ngon
ReplyDeletepublic ActionResult Index()
ReplyDelete{
string area = Request.RequestContext.RouteData.DataTokens.ContainsKey("area") ? Request.RequestContext.RouteData.DataTokens["area"].ToString() : "";
string controller = Request.RequestContext.RouteData.Values["controller"].ToString();
string action = Request.RequestContext.RouteData.Values["action"].ToString();
var sb = new StringBuilder();
sb.Append("Area: " + area + "
");
sb.Append("Controller: " + controller + "
");
sb.Append("Action: " + action + "
");
Response.Write(sb.ToString());
Response.End();
return Content("Done");
}
}