Phân quyền trong C#

Có ai cho mình hỏi về phân quyền quản trị được không
Mình viết một chương trình quản trị phân quyền, tuy nhiên nó có một cái lỗi là
Nếu như đăng nhập lần đầu thì không sao
Nếu đăng nhập lần kế tiếp thì dù dữ liệu không chính xác

Mình ví dụ nhé:
Lần đầu mình đăng nhập bằng tài khoản: admin mật khẩu: admin, chọn loại tài khoản (loại toài khoản sẽ chọn Form và quyết định Loại nào truy cập form nào và có quyền gì)
Nếu mình chọn admin admin và chọn loại 1 thì ok nhưng chọn loại 2 và 3 thì bị sai nhưng sau khi đăng nhập xong.
Tắt Form mới đi, thì chọn loại 2 và 3 đều nhập vào được và đối với các tài khoản loại 2-3 cũng có thể đăng nhập xong rồi, tắt Form mới đi thì đăng nhập lại có thể vào loại 1 với quyền cao nhất. Có ai biết cách sửa lỗi này không
 

taplamhacker

♥ Thanh Trâm ♥
:oh:
quyền loại 1, 2 ,3
loại 1 là admin, 2 là mem vip 3 là mem bình thường
bạn cần xác định xem ai thuộc nhóm nào, trước khi bạn tắt form để thay user thì bạn phải log out ra trước

-- ở vd của bạn, bạn k nên cho chọn loại tài khoản, loại tài khoản bạn quy định luôn nhóm nào làm dc chức năng gì, chỉ cần username + pass là vô luôn k cần chọn
-- vd: nếu đã là administrator thì cần gì chọn những quyền ở cấp dưới, vì quyền admin đã bao gồm tất cả
 
:oh:
quyền loại 1, 2 ,3
loại 1 là admin, 2 là mem vip 3 là mem bình thường
bạn cần xác định xem ai thuộc nhóm nào, trước khi bạn tắt form để thay user thì bạn phải log out ra trước

-- ở vd của bạn, bạn k nên cho chọn loại tài khoản, loại tài khoản bạn quy định luôn nhóm nào làm dc chức năng gì, chỉ cần username + pass là vô luôn k cần chọn
-- vd: nếu đã là administrator thì cần gì chọn những quyền ở cấp dưới, vì quyền admin đã bao gồm tất cả
bạn cho mình code log out được không
 
ClassConnect clsCon = new ClassConnect();
con = clsCon.getConnection();
OleDbCommand cmd = new OleDbCommand();


cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"select * from thongtintaikhoan
where (tk = @tk)
and (password = @password)
and (loaitaikhoan = @loaitaikhoan)";
cmd.Parameters.Add(@"tk", OleDbType.VarChar, 50).Value = textBox2.Text;
cmd.Parameters.Add(@"password", OleDbType.VarChar, 50).Value = textBox1.Text;
cmd.Parameters.Add(@"loaitaikhoan", OleDbType.VarChar, 50).Value = textBox3.Text;
da.SelectCommand = cmd;
da.Fill(dt);
if (dt.Rows.Count > 0 && textBox3.Text == "loại 1") // kiểm tra đăng nhập và xác nhận quyền chạy dữ liệu tương ứng
{



MessageBox.Show("Đăng nhập thành công sếp", "Thông báo");
Form f = new Form2();
f.ShowDialog();
this.Close();



}
else if (dt.Rows.Count > 0 && textBox3.Text == "loại 2" )
{
MessageBox.Show("Đăng nhập thành công nhân viên", "Thông báo");
Form f = new Form4();
f.ShowDialog();
this.Close();




}
else if (dt.Rows.Count > 0 && textBox3.Text == "loại 3")
{
MessageBox.Show("Đăng nhập thành công sinh viên", "Thông báo");
Form f = new Form3();
f.ShowDialog();
this.Close();
}
else if (textBox3.Text == "" && textBox2.Text == "" && textBox1.Text == "")
{
MessageBox.Show("Chưa điền tài khoản, mật khẩu và cả loại tài khoản");
}
else if (textBox2.Text == "" && textBox1.Text =="")
{
MessageBox.Show("Chưa điền tài khoản và mật khẩu");
}
else if (textBox2.Text == "")
{
MessageBox.Show("Chưa điền tài khoản");
}
else if (textBox1.Text == "")
{
MessageBox.Show("Chưa điền mật khẩu");
}
else if (textBox3.Text == "")
{
MessageBox.Show("Chưa điền loại tài khoản");
}

else
{
MessageBox.Show("Tài khoản hoặc mật khẩu sai");
}
 

taplamhacker

♥ Thanh Trâm ♥
lần sau bạn cho code vào thẻ
Mã:
 cho dễ nhìn nhé
[HTML][CODE]code ví dụ
[/HTML]

trong class ClassConnect bạn tạo hàm Close,
tham khảo

Mã:
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection();
con.Close();

tạo btnLogOut và bắt sự kiện tới hàm này
 

Thống kê

Chủ đề
100,667
Bài viết
467,441
Thành viên
339,833
Thành viên mới nhất
duythinh2222
Top