Trang 3 trên tổng số 3 Đầu tiênĐầu tiên 123
Từ 21 tới 29 trên tổng số 29 kết quả

Đề tài: Phân Quyền (Phần I : Phân quyền trên Menu)

  1. #21
    Ngày gia nhập
    03 2013
    Bài viết
    2

    Mặc định Phân Quyền (Phần I : Phân quyền trên Menu)

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    Có cái cách nữa về cái menu phân quyền này, lần trước có 1 bạn gửi cho tui, share luôn cho anh em tham khảo
    Bác dieucay555 có code của file : mahoachuoi.dll không ?

    share cho mọi người tham khảo được không ?

    Em thấy menu động này rất hay !

  2. #22
    Ngày gia nhập
    03 2013
    Bài viết
    4

    hay đối với người đã biết thôi
    chứ những người mới học hoặc học qua sơ sơ rồi mà viết chương trình 3 layer thế này thì ai mà hiểu được
    Mình muốn làm phân quyền động trên form mà download phần II về xem mà k hiểu gì cả luôn

  3. #23
    Ngày gia nhập
    03 2013
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi userver1 Xem bài viết
    hay đối với người đã biết thôi
    chứ những người mới học hoặc học qua sơ sơ rồi mà viết chương trình 3 layer thế này thì ai mà hiểu được
    Mình muốn làm phân quyền động trên form mà download phần II về xem mà k hiểu gì cả luôn
    bạn nói đúng. nếu xem qua thì thấy khó hiểu

    nhưng khi ngâm kỹ kỹ, thất hay đó !

  4. #24
    Ngày gia nhập
    11 2010
    Bài viết
    1

    cảm ơn nhiều nhé

  5. #25
    Ngày gia nhập
    07 2012
    Bài viết
    2

    Thank bạn bài thật là hĩu ích, có điều viết pro wa mem mới khó có thể hiểu hết được.
    Mình mới dow về chạy thì như vậy có phải bị lỗi hay là trương trình nó vậy.
    Mình đã xem bài 1 của bạn nói về phân quyền menu, khi 1 group nào được phân quyền menu nào thì khi nhóm đó đăng nhập vào menu đó sẽ được enable, không không thì sẽ không có người dùng click vào. nhưng ở bài này mình đăng nhặp bằng tài khoản accounting và mình phân quyền cho nó chỉ được full quyền với menu người dùng, nhưng khi đăng nhập vào thì các menu còn lại vẫn sáng chỉ có điều là các button thì đã ẩn đi, thứ 2 nếu mình để ADMIN_MODE = false thì khi đăng nhập vào thì menu quản lý hệ thống sẽ bị mờ đi không thể nào vào menu còn được cho dù mình đã phân cho group này có full quền với menu người dùng thưộc menu quản lý hệ thống

  6. #26
    Ngày gia nhập
    11 2010
    Bài viết
    412

    Mặc định Phân Quyền (Phần I : Phân quyền trên Menu)

    Mọi người cho mình hỏi với
    Mình cũng đang làm về phần phân quyền này, mình muốn phân quyền được sau khi đã đóng gói chương trình chứ không phải phân quyền theo kiểu fix cứng rồi đóng gói (cái này thì đơn giản rồi).
    Mình có ý tưởng thế này: có 1 bảng Phân Quyền chẳng hạn, bao gồm các trường:
    - MenuName: chứa tên menu
    - UserName: tên user
    - Permission: quyền truy cập
    Khi load form lên thì chạy từng lệnh kiểm tra xem user này có được phân quyền hay không, có thì hiện lên không thì thôi, nhưng như thế sẽ rất bất tiện vì với mỗi menu phải mất tầm 6 dòng lệnh, mà Chương trình có hàng trăm cái menu thì cũng mệt đấy.
    vd:
    Code:
    SqlConection con = new SqlConection("chuỗi kết nối");
    DataTable dt = new DataTable();
    try
    {
    con.Open();
    SqlDataAdapter damenu1 = new SqlDataAdapter (" select * from PhanQuyen where UserName = '"+labelUser.text+"' and MenuName = '"+Menu1.name+"'  and Permission = 'true' ", con)
    dt.Clear();
    damenu1.Fill(dt);
    if(dt.Rows.Count > 0)
    //cho hiện menu1 ấy lên
    
    SqlDataAdapter damenu2 = new SqlDataAdapter (" select * from PhanQuyen where UserName = '"+labelUser.text+"' and MenuName = '"+Menu2.name+"' and Permission = 'true'  ", con)
    dt.Clear();
    damenu2.Fill(dt);
    if(dt.Rows.Count > 0)
    //cho hiện menu2 ấy lên
    .....................và cứ thế đến hết menu trong Form chính thì thôi
    con.Close();
    Vì trình còn gà nên chỉ nghĩ được mức đó, các bạn đừng gạch đá quá, ai có ý tưởng hay hơn (nhưng đừng quá khó thực hiện với trình còi của mình) thì cho mình ý tưởng với
    Mình cảm ơn !

  7. #27
    Ngày gia nhập
    07 2015
    Bài viết
    1

    user name và pass là gì vậy bạn /

  8. #28
    Ngày gia nhập
    09 2014
    Bài viết
    2

    cảm ơn bạn nhé

  9. #29
    Ngày gia nhập
    02 2009
    Bài viết
    103

    Mặc định THanks

    Trích dẫn Nguyên bản được gửi bởi phucpham Xem bài viết
    Chào các bạn,

    Như tất cả chúng ta biết các ứng dụng thông thường đều có nhu cầu phân quyền cho các user (các nhóm người sử dụng) nghĩa là user sau khi đăng nhập vào ứng dụng thì user đó được phép sử dụng những màn hình nào (thường thì truy cập từ menu) và những chức năng nào trên màn hình đó (phân quyền trên Form : Vấn đề này tôi sẽ viết ở Phần II).

    Trong bài viết này tôi sẽ chia sẻ với các bạn 1 cách thức phân quyền trên menu. Ý tưởng của cách làm này như sau :
    - Đầu tiên chúng ta thiết kế 5 tables sau :

    + User : Table nào chứa các thông tin về người sử dụng.
    + Group : Chứa thông tin về nhóm người sử dụng.
    + UserGroup : Cho biết users thuộc về group(s) nào.
    + Menu : Chứa thông tin về menu chính (dữ liệu được lấy từ menu được design trên Form Main) của ứng dụng. Menu chính khi thiết kế sẽ cần có thêm 1 giá trị bắt buôc như sau: Nếu menuItem đó liên kết tới 1 Form nào đó thì cần set value (tên Form) cho thuộc tính Tag của MenuItem này.
    + MenuGroup : Cho biết 1 nhóm nào đó thì được phép sử dụng những menu nào của ứng dụng.

    Hình Database Diagram :


    - Sau khi đã có các tables trên thì chúng ta sẽ làm 3 Forms (frmUser, frmGroup, frmAuthorizarion) để danh cho việc thêm, sửa, xóa dữ liệu trên 4 tables : User, Group, UserGroup & MenuGroup.

    Form chính dùng cho việc phân quyền là frmAuthorization :
    Hình Form Authorization :


    - Trên Form này có 2 phần : 1 bên là list các group (TreeView) & 1 bên là Menu được BindData từ table Menu trong DB.
    - Khi user click vào 1 group nào đó thì các menuItem mà group đó được phép sử dụng sẽ được checked.
    - Khi [admin user] click nút sửa thì sẽ cho phép họ phân quyền trên menu bằng cách click trên từng menuItem.

    Khi click menuItem này sẽ có 2 tình huống xảy ra :
    + Nếu menuItem chưa được chọn thì nó sẽ được chọn (checked của menuItem là true và tất cả các subMenu(nếu có) sẽ được checked theo).
    + Nếu menuItem đã được chọn thì sẽ bỏ checked của menuItem này cũng như tất cả các subMenu (nếu có).

    Sau khi họ sửa xong (phân quyền) thì sự thay đổi đó sẽ được lưu xuống DB bằng cách Click Save Button.

    => Mỗi lần các user chạy chương trình thì sẽ lấy dữ liệu từ DB để Bind cho Menu chính của chương trinh (nếu user không có quyền đối với Menu nào thì menu đó sẽ bị Disabled hoặc không hiện ra).

    Các bạn có thể coi chi tiết hơn trong attached file : Bao gồm Database và project hoàn chỉnh. Muốn chạy project này trước tiên phải restore Database tên là Framework.bak nằm trong thư mục DB. Sau đó sửa lại ConnectionString trong file app.config tương ứng với máy của mọi người.


    Note :
    Khi chạy lần đầu tiên thì table Menu trong DB chưa có giá trị do đó cần phải Insert dữ liệu từ Menu đã được Design trên Form Main xuống DB bằng cách click button [Update Menu] trên Form Main này. Button này được hiển thị khi giá trị DEBUGMODE trong file app.config là true.

    ====================Bổ Sung========================
    Khi các bạn tạo thêm các Form tương ứng với các Menu Item mới thì các bạn viết thêm code để gọi Form này trong sự kiện MenuItem_Click (sự kiện này được gọi khi Bind Menu từ DB lên).

    Giả sử tôi có 1 Form mới tên là frmTest và 1 Menu mới là TEST
    Function MenuItem_Click - Cần viết thêm code trong function này:
    Visual C# Code:
    1. private void MenuItem_Click(object sender, System.EventArgs e)
    2.         {
    3.             if (((ToolStripMenuItem)sender).Tag == null) return;
    4.             string frmName = ((ToolStripMenuItem)sender).Tag.ToString();
    5.             Form frm = null;
    6.             switch (frmName.ToLower())
    7.             {
    8.                 #region "System"                    
    9.                 #endregion
    10.  
    11.                 #region "TEST"
    12.                 case "frmtest"://chữ thường hết
    13.                     frm = new frmTest();
    14.                     break;
    15.                 #endregion
    16.             }
    17.  
    18.             if (frm != null)
    19.             {
    20.                 frm.WindowState = FormWindowState.Maximized;                
    21.                 frm.MdiParent = this;                
    22.                 frm.Show();
    23.             }
    24.         }

    Còn đây là function ShowSubMenu - Bind Menu từ DB lên
    Visual C# Code:
    1. //Set MenuItem Click event
    2. subItem.Click += new System.EventHandler(MenuItem_Click);
    ================================================== =


    * Cái hình Form Authorization do trước đây không lấy được từ MediaFire do đó tôi up hình mới đã bao gồm cả phần phân quyền cho methods nên các bạn download về chạy sẽ không giống như hình trên mà chỉ có 1 TreeView ở bên trái và 1 toolStrip menu ở bên phải thôi. Hy vọng cuối tuần này sẽ post được tiếp Phần II.

    Phần II : http://forums.congdongcviet.com/showthread.php?t=28712
    Sau 8 năm, 2 bài viết về phân quyền trên menu của bạn vẫn vô cùng giá trị.
    Cám ơn bạn

Các đề tài tương tự

  1. Phân Quyền (Phần II : Phân Quyền Trên Methods (Form))
    Gửi bởi phucpham trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 45
    Bài viết cuối: 08-10-2016, 10:29 PM
  2. Login hiển thị danh sách quyền lền làm menu
    Gửi bởi lengocktv trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 04-08-2011, 08:21 AM
  3. Cách phân quyền cho Menu làm bằng sitemap ?
    Gửi bởi tomcat trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 22-06-2011, 09:29 PM
  4. Phân quyền user với control menu ?
    Gửi bởi tomcat trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 20-06-2011, 09:51 PM
  5. Phân quyền Menu và form
    Gửi bởi dangtrang2246 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 23-08-2008, 12:31 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn