Sử dụng Delphi XE để tạo ứng dụng cơ sở dữ liệu tương đối đơn giản bằng Datasnap.Cách hiệu quả nhất để chuyển thông tin đăng nhập SQL cho máy chủ Delphi Datasnap?
Vì một số bảo mật trong ứng dụng của tôi được xử lý ở cấp cơ sở dữ liệu, tôi cần chuyển thông tin đăng nhập SQL của người dùng từ ứng dụng khách đến máy chủ Datasnap của tôi.
(Tôi đang cố gắng để làm cho máy chủ Datasnap không quốc tịch nếu có thể, vì vậy nhận thức được rằng tôi sẽ phải làm điều này cho mỗi cuộc gọi.)
Tôi đang sử dụng ClientDatasets (CDS) về phía khách hàng vì vậy tôi có thể sử dụng OnBeforeGetRecords để truyền dữ liệu trong PropertyData OleVariant từ CDS trên máy khách đến TDataSetProvider tương ứng trên máy chủ. Nhưng điều đó có nghĩa là mọi CDS đơn trên mọi mô-đun dữ liệu phải có một sự kiện thực hiện điều này, điều này có vẻ lộn xộn và khó sử dụng. Tôi không thể không cảm thấy phải có một cách để truyền thông điệp đến máy chủ ở mức cao hơn thế.
một cái gì đó như thế này ở cấp DSServerClass ở phía máy chủ Những gì tôi thực sự muốn là:
Procedure TMyServerContainer.MyServerClassCreateInstance(DSCreateInstanceEventObject: TDSCreateInstanceEventObject);
begin
// Server detects request for data from client app
fUsername := GetUsernameFromClientSomehow;
fPassword := GetPasswordFromClientSomehow;
// create data modules and initialise
MyDataModule := TMyDataModule.Create(nil);
MyDataModule.InitialiseWithSQLCredentials(fUsername, fPassword);
DSCreateInstanceEventObject.ServerClassInstance := MyDataModule;
End;
thành phần Xác thực quản lý có thể giúp tôi ở đây? Bất kỳ ý tưởng nào khác? Hay tôi bị mắc kẹt với OnBeforeGetRecords?
Rất cám ơn.
Cảm ơn bạn, điều đó dường như hoạt động - rõ ràng bây giờ bạn chỉ ra điều đó nhưng điều đó có thể đã cứu tôi ngày. – RichardS