Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 21 kết quả

Đề tài: [Hỏi] Phân quyền menu ???

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

    Mặc định [Hỏi] Phân quyền menu ???

    Chào các bạn !
    Mình đang làm về phần phân quyền menu cho chương trình, 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ì mình làm được).
    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 từng menu tương ứng 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 5,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();
    
    //Sự kiện Load Form
    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();
    catch 
    {
    }
    Vì trình còn gà nên chỉ nghĩ được mức đó, các bạn đừng gạch đá nhé, 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 !
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    135

    khi nguoi dung đăng nhập. bảng nguoi dùng có phân quyền theo admin|mode|guest.
    dua vao đó show menu tuong ung.
    cách khác là có bao nhiu menu. dua vao 1 table. người dùng nào dc vào menu nào thì add vào bảng menu_nguoidung các id tương ứng

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

    Trích dẫn Nguyên bản được gửi bởi bachdienquan Xem bài viết
    khi nguoi dung đăng nhập. bảng nguoi dùng có phân quyền theo admin|mode|guest.
    dua vao đó show menu tuong ung.
    cách khác là có bao nhiu menu. dua vao 1 table. người dùng nào dc vào menu nào thì add vào bảng menu_nguoidung các id tương ứng
    Cảm ơn bạn đã gợi ý.
    Mình chưa hiểu ý bạn lắm, bạn có thể giải thích rõ hơn được không.
    Vấn đề của mình là mình đã phân quyền trong BD rồi nhưng LÀM SAO ĐỂ SO SÁNH TỪNG MENU CỦA TRƯƠNG TRÌNH MENU TRONG BD CỦA MÌNH ẤY

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    135

    Ví dụ bảng Menu có id,name tương ứng({1,MenuA},{2,menuB},{3,MenuC}).
    Bảng account có id,name,quyenvaomenu ({1,"anh A","1,2,3"},{2,"anh B","1"},{3,"anh C","3"}} có nghĩa là anh A chỉ vào được 3 menu.
    anh B vào được menu thứ 1, anh C vào được menu thứ 3
    <= đây là phương pháp kiểm tra quyền vào menu chi tiết đến từng member.
    còn roles thì tương tự.
    khi 1 user đăng nhập. ta check quyenvaomenu => lấy ra được anh A là "1,2,3".split(",")
    string menuduocvao="";
    for(i=>"1,2,3".split(",").length)
    menuduocvao+="<li>"+namemenu+"</li>";

    vào .aspx gọi ra biến <%=menuduocvao%> là render ra html dc menu <li> menu

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

    Ối bạn ơi, mình làm Winform không phải Web đâu ah
    Trong BD mình đã phân quyền được rồi
    vd:
    User1 được vào các menu A, B, D...
    User2 được vào các menu C, E, G...
    cái mình cần bây giờ là CHECK NHƯ THẾ NÀO ?
    giả sử mình có 1 cái Table:
    User1 MenuA
    User1 MenuB
    User1 MenuD
    bây giờ so sánh MenuA này với Menu trên Form như thế nào ?

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    135

    Mặc định [Hỏi] Phân quyền menu ???

    c# web vs win có khác nhau bao nhiêu đâu ta?.
    for(i=>"1,2,3".split(",").length)
    if(ID_Menu=="1,2,3".split(",")[i])
    //add new DataTable.
    có Da rồi muốn show như thế nào mà ko dc.

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

    Mình vẫn chưa hiểu lắm đoạn
    Code:
    for(i=>"1,2,3".split(",").length)
    if(ID_Menu=="1,2,3".split(",")[i])
    Mình thì muốn so sánh cái Menu.name với cái tên menu trong Table được lấy về
    Nếu được bạn có thể cho mình yahoo hay sđt của bạn được không ?
    Nếu bạn rãnh thì mình nhờ bạn Teamview xem giúp

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

    không ai giúp mình nữa ah :(

  9. #9
    Ngày gia nhập
    03 2011
    Bài viết
    151

    Về cơ bản thì phan quyền menu thì ở đâu cung thế, cái menu hiển thị chỉ là cái bề ngoài, mình muốn hiển thị như thế nào do mình phân quyền bên trong.
    Thường thường để thực hiện tính năng phân quyền menu(minh chỉ nói menu cấp 1) thì người ta sẽ phải có 1 table : HT_MENU gồm có các cột như sau : ID_MENU,TENMENU,QUYENDULIEU.
    Dữ liệu trong bảng sẽ có dạng :
    1|Menu1|1,2,3,4,5
    2|Menu2|3,4,5

    Như bạnh thấy ở trên thì với menu 1 thì 5 thằng dc quyền nhìn, menu2 có 3 thang được nhìn
    Trong code bạn chỉ việc khi User đăng nhập bắt lấy cái id , so sánh với chuỗi QUYENNGUOIDUNG, nếu nó nằm trong đo thì nó đựoc nhìn cái menu đó.
    Như vậy bạn đã có danh sách id menu người đó được nhìn. CÒn truyền menu thế nào thì bạn phải tự bơi rồi vì có nhiều laọi menu lắm.
    Có gì ko hiểu cứ comment

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

    Trích dẫn Nguyên bản được gửi bởi thitcholaotien Xem bài viết
    Về cơ bản thì phan quyền menu thì ở đâu cung thế, cái menu hiển thị chỉ là cái bề ngoài, mình muốn hiển thị như thế nào do mình phân quyền bên trong.
    Thường thường để thực hiện tính năng phân quyền menu(minh chỉ nói menu cấp 1) thì người ta sẽ phải có 1 table : HT_MENU gồm có các cột như sau : ID_MENU,TENMENU,QUYENDULIEU.
    Dữ liệu trong bảng sẽ có dạng :
    1|Menu1|1,2,3,4,5
    2|Menu2|3,4,5

    Như bạnh thấy ở trên thì với menu 1 thì 5 thằng dc quyền nhìn, menu2 có 3 thang được nhìn
    Trong code bạn chỉ việc khi User đăng nhập bắt lấy cái id , so sánh với chuỗi QUYENNGUOIDUNG, nếu nó nằm trong đo thì nó đựoc nhìn cái menu đó.
    Như vậy bạn đã có danh sách id menu người đó được nhìn. CÒn truyền menu thế nào thì bạn phải tự bơi rồi vì có nhiều laọi menu lắm.
    Có gì ko hiểu cứ comment
    Cảm ơn bạn. Như bảng dữ liệu của mình ở trên đầu thì với điều kiện
    where UserName = Tên người đang login
    vd:
    UserName - MenuName - Permission
    User1 - MenuA - true
    User1 - MenuB - true
    User1 - MenuD - true
    thì mình cũng đã có 1 list danh sách các Menu mà người đó được nhìn thấy
    cái mình cần ở đây là so sánh cái list đó với từng menu trên Form cơ
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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