Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Haspermissionto와 HasanyPermissionto의 차이점은 무엇입니까?


Haspermissionto와 HasanyPermissionto의 차이점은 무엇입니까?


Spatie Laravel 권한 패키지의 맥락에서`haspermissionto '와`hasanypermissionto'의 차이점은 사용자 권한을 확인하는 방법에 있습니다.

-Haspermissionto 사용자가 특정 단일 권한이 있는지 확인합니다. 사용자가 정확한 권한을 가지고 있으면 'true'를 반환하고 역할을 통해 직접 할당 또는 상속받은 정확한 권한을 가지고 있으며 'false'는 그렇지 않으면`true '를 반환합니다. 이 방법에 권한 이름, ID 또는 권한 개체를 전달할 수 있습니다. 사용자에 대한 특정 권한을 확인하려는 경우 유용합니다.

-HasanyPermissionto 사용자가 배열 또는 목록으로 전달 된 여러 권한 중 하나가 있는지 확인합니다. 사용자가 지정된 권한 중 하나 이상이 있으면 'true'를 반환하고, 'false'는 할당되지 않은 경우 'false'를 반환합니다. 이 방법은 사용자가 가능한 일련의 권한 세트에서 하나 이상의 권한이있는 경우 액세스를 허용하려는 경우 편리합니다.

추가 중요한 메모 :

- 두 방법 모두 사용자에게 직접 할당 된 권한과 역할에서 상속 된 권한을 확인합니다.

-이 방법은 Laravel의 GATE`이전 '콜백 또는 슈퍼 아인 우회 기능을 고려하지 않습니다. 이를 위해서는 Laravel의`can ',`canany'또는`canall '메소드를 대신 사용하여 게이트 및 정책과 통합하고 슈퍼 어드먼트 논리를 지원해야합니다.

-`haspermissionto '는 단일 권한 점검을위한 것이고,`hasanypermissionto`는 충분한 경우 여러 권한을 확인하는 것입니다.

요약하면, 하나의 권한을 확인할 때`haspermissionto '를 사용하고, 사용자가 목록에서 하나 이상의 권한이 있는지 확인하려면`hasanypermissionto'를 사용하십시오. 슈퍼 아인민 또는 더 복잡한 승인 시나리오의 경우 Laravel의 내장 된 'can'방법 대신 [1] [2] [5]를 선호합니다.

인용 :
[1] https://spatie.be/docs/laravel-permission/v6/basic-usage/direct-permissions
[2] https://stackoverflow.com/questions/58093970/spatie-laravel-permissions-gate-and-haspermissionto-are-working
[3] https://github.com/spatie/laravel-permission/issues/79
[4] https://discuss.flarum.org/d/4817-difference-between-user-can-and-user-haspermission
[5] https://spatie.be/docs/laravel-permission/v6/basic-usage/role-permissions
[6] https://dev.to/nicolasmontielf/add-permissions-and-roles-to-laravel-project-2hhl
[7] https://www.reddit.com/r/laravel/comments/1e78vct/strategy_for_permission_and_authorisation_design/
[8] https://www.honeybadger.io/blog/laravel-permissions-roles/