Security4Delphi terdiri dari perpustakaan yang memungkinkan penggunaan konsep keamanan dalam aplikasi Delphi Anda.
Keamanan adalah keprihatinan yang sangat penting bagi sebagian besar aplikasi dan fokus diskusi tanpa akhir pada tim pengembangan. Implementasi konteks keamanan telah dirancang dengan cara yang sederhana dan fleksibel, terlepas dari lapisan presentasi atau teknologi, membuat Anda bebas untuk mengimplementasikan solusi mereka sendiri atau menggunakan ekstensi yang ada.
Mekanisme otentikasi bertujuan untuk memverifikasi identitas sistem pengguna.
Mekanisme otorisasi IO yang sudah bertanggung jawab untuk memastikan bahwa hanya pengguna yang berwenang yang diberikan akses ke fitur -fitur tertentu dari suatu sistem. Otorisasi dapat terjadi dalam dua cara: fungsionalitas izin dan memungkinkan berdasarkan peran.
Untuk mendapatkan salinan lokal dan berjalan ikuti langkah -langkah sederhana ini.
Untuk menggunakan pustaka ini, diperlukan versi terbaru dari Delphi IDE (XE atau lebih tinggi).
Kloning repo
git clone https://github.com/ezequieljuliano/Security4Delphi.git
Tambahkan "jalur pencarian" dari IDE Anda atau proyek Anda di direktori berikut:
Security4Delphisrc
Untuk memberikan paradigma konteks keamanan dalam proyek Anda dengan Security4Delphi yang Anda butuhkan:
Untuk mengilustrasikan penggunaan, mari kita lihat solusi untuk mengelola log aplikasi.
Buat implementasi antarmuka IAuthenticator Anda:
TAuthenticator = class(TAbstractSecurityProvider, IAuthenticator)
private
fAuthenticated: Boolean;
fAuthenticatedUser: IUser;
protected
function GetAuthenticatedUser: IUser;
procedure Authenticate(user: IUser);
procedure Unauthenticate;
public
procedure AfterConstruction; override;
end;
Buat implementasi antarmuka iauthorizer Anda:
TAuthorizer = class(TAbstractSecurityProvider, IAuthorizer)
private
{ private declarations }
protected
function HasRole(role: string): Boolean;
function HasAnyRole(roles: array of string): Boolean;
function HasAuthority(authority: string): Boolean;
function HasAnyAuthority(authorities: array of string): Boolean;
public
{ public declarations }
end;
Daftarkan implementasi Anda dalam konteks:
function SecurityContext: ISecurityContext;
begin
if (SecurityContextInstance = nil) then
begin
SecurityContextInstance := TSecurityContext.Create;
SecurityContextInstance.RegisterAuthenticator(TAuthenticator.Create(SecurityContextInstance));
SecurityContextInstance.RegisterAuthorizer(TAuthorizer.Create(SecurityContextInstance));
end;
Result := SecurityContextInstance;
end;
Gunakan konteks dan validasi otentikasi dan otorisasi:
function TPersonRepository.Delete(personId: Integer): Boolean;
begin
if not SecurityContext.HasAnyRole(['ROLE_ADMIN', 'ROLE_MANAGER']) then
raise EAuthorizationException.Create('You do not have role to access this feature.');
if not SecurityContext.HasAuthority('PERSON_DELETE') then
raise EAuthorizationException.Create('You do not have permission to access this feature.');
Result := True;
end;
Melindungi sistem dengan [yang dibutuhkan], [wajib dibutuhkan], [wajib ditulis] dan [wajib dibutuhkan] aspek:
Menggunakan Security4Delphi bersama-sama dengan Aspect4Delphi dimungkinkan untuk memanfaatkan konsep pemrograman berorientasi aspek (AOP).
TPersonRepository = class
private
{ private declarations }
protected
{ protected declarations }
public
constructor Create;
destructor Destroy; override;
[RequiredRole('ROLE_ADMIN')]
[RequiredAuthority('PERSON_INSERT')]
function Insert(person: TPerson): TPerson; virtual;
[RequiredAnyRole('ROLE_ADMIN,ROLE_MANAGER')]
[RequiredAuthority('PERSON_UPDATE')]
function Update(person: TPerson): TPerson; virtual;
[RequiredAnyRole('ROLE_ADMIN,ROLE_MANAGER')]
[RequiredAuthority('PERSON_DELETE')]
function Delete(personId: Integer): Boolean; virtual;
[RequiredAnyRole('ROLE_ADMIN,ROLE_MANAGER,ROLE_GUEST')]
[RequiredAuthority('PERSON_VIEW')]
function FindById(personId: Integer): TPerson; virtual;
end;
Lihat masalah terbuka untuk daftar fitur yang diusulkan (dan masalah yang diketahui).
Kontribusi inilah yang membuat komunitas open source menjadi tempat yang luar biasa untuk dipelajari, menginspirasi, dan menciptakan. Kontribusi apa pun yang Anda buat sangat dihargai .
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature ) Didistribusikan di bawah lisensi Apache. Lihat LICENSE untuk informasi lebih lanjut.
Untuk menghubungi kami, gunakan opsi:
https://github.com/ezequieljuliano/security4delphi