Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 19
  1. #1

    [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:
    Mã:
    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 !

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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 tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi bachdienquan
    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 tham gia
    Sep 2015
    Bài viết
    0
    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 tham gia
    Sep 2015
    Bài viết
    0
    Ối bạn ơi, mình làm Winform không phải Web đâu ah [IMG]images/smilies/biggrin.png[/IMG]
    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 tham gia
    Sep 2015
    Bài viết
    0
    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 tham gia
    Sep 2015
    Bài viết
    0
    không ai giúp mình nữa ah

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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

  9. #9
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0
    Thế thì mình xin lỗi, chứ bạn thiết kế csdl quá không hợp lý, tuy ko hợp lý nhưng bạn chỉ cần có hàm điều kiện :
    where userName = username and Permission = 'true'.
    Dù sao thì mình cũng thấy thiết kế của bạn cho menu quá củ chuối

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi thitcholaotien
    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ơ

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •