يتكون Security4Delphi من مكتبة تتيح استخدام مفهوم الأمان في تطبيقات Delphi الخاصة بك.
يعد الأمان مصدر قلق كبير بالنسبة لمعظم التطبيقات وتركيز المناقشات التي لا نهاية لها على فرق التنمية. تم تصميم تنفيذ سياق الأمان بطريقة بسيطة ومرنة ، بغض النظر عن العرض التقديمي أو طبقة التكنولوجيا ، مما يجعلك حرة في تنفيذ حلها الخاص أو استخدام الامتدادات الحالية.
تهدف آلية المصادقة إلى التحقق من هوية المستخدم للنظام.
إن آلية ترخيص IO بالفعل مسؤولة عن ضمان منح المستخدمين المعتمدين فقط الوصول إلى ميزات معينة للنظام. قد يحدث التفويض بطريقتين: وظيفة الإذن وتمكينها حسب الدور.
للحصول على نسخة محلية وتشغيل اتبع هذه الخطوات البسيطة.
لاستخدام هذه المكتبة ، يلزم إصدار محدث من Delphi IDE (XE أو أعلى).
استنساخ الريبو
git clone https://github.com/ezequieljuliano/Security4Delphi.git
أضف "مسار البحث" الخاص بـ IDE أو مشروعك على الدلائل التالية:
Security4Delphisrc
لتوفير نموذج سياق الأمان في مشروعك باستخدام Security4Delphi الذي تحتاجه:
لتوضيح الاستخدام ، دعونا نلقي نظرة على حل لإدارة سجلات التطبيق.
قم بإنشاء تنفيذ واجهة iAuthenticator:
TAuthenticator = class(TAbstractSecurityProvider, IAuthenticator)
private
fAuthenticated: Boolean;
fAuthenticatedUser: IUser;
protected
function GetAuthenticatedUser: IUser;
procedure Authenticate(user: IUser);
procedure Unauthenticate;
public
procedure AfterConstruction; override;
end;
قم بإنشاء تنفيذ واجهة iAuthorizer:
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;
سجل تطبيقاتك في السياق:
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;
استخدم السياق والتحقق من المصادقة والترخيص:
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;
حماية النظام باستخدام [مطلوبة] ، [مطلوبانيرول] ، [المطلوبة] الجوانب [المطلوبة] وجوانب [مطلوبة):
من الممكن استخدام Security4Delphi مع Side4Delphi للاستفادة من مفهوم البرمجة الموجهة نحو الجانب (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;
راجع المشكلات المفتوحة للحصول على قائمة بالميزات المقترحة (والمشكلات المعروفة).
المساهمات هي التي تجعل مجتمع المصدر المفتوح مكانًا رائعًا للتعلم وإلهام وإنشاء. أي مساهمات تقدمها موضع تقدير كبير .
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature ) موزعة تحت رخصة أباتشي. انظر LICENSE لمزيد من المعلومات.
للاتصال بنا ، استخدم الخيارات:
https://github.com/ezequieljuliano/security4delphi