Điều này nghe có vẻ giống như một câu hỏi ngu ngốc, nhưng tôi tự hỏi liệu tôi có thiếu một mẹo ở bất kỳ đâu không.Cách tốt nhất để đảm bảo người dùng đã đăng nhập chỉ thấy dữ liệu của họ
Trường hợp là, tôi có một ứng dụng web sử dụng Simple Memebership, nơi người dùng có thể đăng ký sử dụng nó (ví dụ như chương trình hóa đơn).
Tuy nhiên, họ chỉ có thể xem/cập nhật/xóa thông tin mà chính họ thêm vào cơ sở dữ liệu/ứng dụng web.
Cách tốt nhất để đảm bảo người dùng chỉ nhận được thông tin của họ là gì?
Có thêm một trường Username để mỗi bảng, ví dụ:
public class Invoice
{
public int InvoiceId { get; set; }
public int CustId { get; set; }
public string UserName { get; set; }
}
public class Item
{
public int ItemId { get; set; }
public int InvoiceId { get; set; }
public string UserName { get; set; }
}
... và sau đó trong bất kỳ bộ điều khiển truy cập vào dữ liệu, chỉ cần thêm một tấm séc cho tên người dùng trong mọi thắc mắc, ví dụ như:
var Inv = db.Invoices.Where(x => x.UserName = User.Identity.Name);
var Itm = db.Items.Where(y => y.UserName = User.Identity.Name);
Đó là những gì tôi đang sử dụng, nhưng tự hỏi nếu điều này là thực hành tốt nhất? Hoặc nếu có một cách đơn giản hơn bây giờ chúng ta đang lên MVC4?
Là nó tốt nhất để sử dụng UserName hoặc UserId từ UserProfile bảng, hoặc dùng nó quan trọng?
Update để thêm rõ ràng sau comments
Vì vậy, 10 người đã đăng ký - và tất cả tạo hóa đơn riêng của họ. Tôi không muốn bất kỳ người dùng nào nhìn thấy bất kỳ hóa đơn người dùng nào khác.
Cảm ơn lời khuyên nào.
Đánh dấu
tôi không này cần phải được thực hiện trên mức độ mã, nhưng thay vào mức độ cơ sở dữ liệu. Nếu người dùng đăng nội dung nào đó, cách tốt nhất là liên kết bài đăng đó với người dùng. Nếu người dùng duyệt đến trang web, truy vấn sẽ truy xuất mọi thứ liên quan đến người dùng đó, vì vậy bạn không phải giải quyết điều đó trong mã. – Terry
Bạn có thể làm điều đó ở bất kỳ đâu ngoài mã? Cơ sở dữ liệu sẽ không biết người dùng sẽ là ai (xin lỗi nếu tôi đã bỏ lỡ điểm của bạn). cảm ơn bạn – Mark
Tại một số thời điểm trong ứng dụng, bạn cần truy xuất thông tin mà người dùng có thể xem. Tại thời điểm đó, bạn đã biết người dùng là ai, vì họ đăng nhập, vì vậy bạn nên có userid ít nhất. Bây giờ khi bạn truy xuất thông tin, hãy sử dụng userid đó để thực hiện truy vấn của bạn và nhận thông tin được liên kết với đúng người dùng. – Terry