Chủ đề: [Hỏi] Phân quyền menu ???
-
02-12-2014, 04:20 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
[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 { }
Mình cảm ơn !View more random threads:
- Vấn đề về game trên web bằng C#?
- Lỗi khi tạo controller MVC 3 asp.net
- Xin hướng dẫn đoạn code sau
- Viết lớp CMyInt
- Nhờ mọi người giúp đỡ
- Lỗi thư viện Ocr Tessnet2 ?
- Kết nối CSDL oracle , SQL với c#
- Console Application String validity
- Xin tư vấn hướng viết một chưong trình điều khiển webcam trên máy tính !
- [help] Ai giúp em điền dữ liệu vào combobox trong mô hình 3 lớp với !!
-
02-12-2014, 05:05 PM #2Junior Member
- 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
-
04-12-2014, 08:57 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi bachdienquan
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
-
04-12-2014, 10:21 AM #4Junior Member
- 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
-
05-12-2014, 04:13 PM #5Junior Member
- 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 ?
-
05-12-2014, 04:55 PM #6Junior Member
- 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.
-
08-12-2014, 10:50 AM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
không ai giúp mình nữa ah
-
09-12-2014, 04:09 PM #8Junior Member
- 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
-
10-12-2014, 03:25 PM #9Junior Member
- 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-12-2014, 06:16 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi thitcholaotien
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ơ
Pallet nhựa Long An đã trở thành một trong những lựa chọn phổ biến cho nhu cầu vận chuyển và lưu trữ hàng hóa trong nhiều ngành công nghiệp. Với đặc tính nhẹ nhàng, chắc chắn và dễ vận chuyển, các...
Thanh lý pallet nhựa Long An giá rẻ