Security4Delphi
1.0.1
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;
使用[必需的],[必需的anyrole],[quertauthority]和[quertanyauthority]方面保護系統:
可以使用Security4Delphi與Aspect4Delphi一起使用面向方面的編程概念(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 )根據Apache許可證分發。有關更多信息,請參見LICENSE 。
與我們聯繫使用以下選項:
https://github.com/ezequieljuliano/security4delphi