인증 - Authorization
Last updated
Last updated
Authorization
권한 부여는 사용자가 응용 프로그램에서 특정 작업을 수행 할 수 있는지 확인하는 데 사용됩니다. Axs는 권한을 구현하기 위한 롤 기반 기능을 제공합니다.
IPermissionChecker
권한 부여 시스템은 IPermissionChecker를 사용하여 권한을 확인합니다.
권한이 필요한 각 작업에 대해 고유 한 권한이 정의됩니다. Axs는 모듈 식으로 설계 되었으므로 모듈(modular)마다 다른 권한을 가질 수 있습니다. 모듈은 권한을 정의하기 위해 AuthorizationProvider에서 파생 된 클래스를 만들어야 합니다.
권한은 다음 속성으로 정의됩니다 :
Name: 시스템 전체에서 고유한 이름입니다. 권한 이름에 대한 const 문자열을 정의하는 것이 좋습니다.
Display name: 나중에 UI에서 권한을 표시하는 데 사용할 수 있는 다국어 가능한 문자열 키입니다.
Description: 나중에 UI에서 권한 정의를 표시하는 데 사용할 수 있는 다국어 가능한 문자열 키입니다.
MultiTenancySides: 다중 테넌트 애플리케이션의 경우 테넌트 또는 호스트가 권한을 사용할 수 있습니다.
권한은 상위 및 하위 권한을 가질 수 있습니다. 이는 권한 검사에 영향을주지 않지만 UI에서 권한을 그룹화하는 데 도움이됩니다.
권한 부여 공급자를 만든 후 모듈의 PreInitialize 메서드에 등록해야 합니다.
권한 부여 공급자는 종속성 주입(dependency injection)에 자동으로 등록됩니다. 권한 부여 공급자는 다른 소스를 사용하여 권한 정의를 빌드하기 위해 모든 종속성 (예 : 저장소)을 삽입 할 수 있습니다.
AxsAuthorize 어트리뷰트를 사용한 권한 체크
AxsAuthorize 속성은 권한을 확인하는 가장 쉽고 일반적인 방법입니다.
"관리자.사용자관리.추가"권한이 부여되지 않은 사용자는 CreateUser 메서드를 호출 할 수 없습니다.
AxsAuthorize 속성은 현재 사용자가 로그인 했는지도 확인합니다 (using IAxsSession.UserId). 메서드에 대해 AxsAuthorize를 선언하면 로그인만 확인합니다.
IPermissionChecker 사용
AxsAuthorize 속성은 대부분의 경우에 충분하지만 메서드 본문에서 권한을 확인해야하는 상황이 있습니다. 아래 예제와 같이 IPermissionChecker를 주입하고 사용할 수 있습니다.
IsGranted는 단순히 true 또는 false를 반환하므로 모든 논리를 코딩 할 수 있습니다. 위와 같이 단순히 권한을 확인하고 예외를 throw하면 Authorize 메서드를 사용할 수 있습니다 :