안녕하세요 여러분, 라라벨 정책을 배우는 과정에서 막혔습니다. 라라벨 정책과 미들웨어의 차이점은 알지만 아직 정책을 어떻게 적용해야 할지 모르겠습니다. 진행자가 완전한 소규모 프로그램을 제공해 주실 수 있나요?
이것은 제가 stackoverflow, http://stackoverflow.com/ques...에서 찾은 정책에 대한 이미지 답변입니다...
그럼 제가 연습할 때 github에 저장해 두었던 코드입니다. 혹시 제 코드에 정책 기능을 추가해주실 분 계시다면 정말 감사하겠습니다. 정책을 추가하기만 하면 정책을 사용하여 모든 기능을 수행할 수 있습니다
https://github.com/GoogleYY/s...
PHP中文网2017-05-16 16:50:50
정책
과 게이트
를 함께 사용할 수 있어 복잡하지 않습니다. 정책
은 AuthServiceProvider에 등록되어 있습니다. AccountPolicy::class => Account::class
를 등록하면 현재 User
가 계정
의 모델
을 추가, 삭제, 수정하고 확인하세요. Policy
和Gate
结合起来使用就行,不复杂。Policy
的注册在AuthServiceProvider里,如注册一个AccountPolicy::class => Account::class
,就表示当前User
是否有权限对Account
这个Model
进行增删改查。
在AccountPolicy
针对增删改查操作写上授权逻辑,如针对Delete
操作写上$user->id === $account->user_id
授权逻辑。
如何触发这个授权逻辑呢?可以使用Model Event
触发,如在EventServiceProvider::boot()
里
Event::listen('eloquent.deleting: *', function (Model $model) {
if(Gate::denies('delete', $object)) {
throw new ForbiddenHttpException("You donot have permission delete {get_class($model)}.");
}
})
Gate与Policy的关系类似于Route与Controller的关系。
삭제
$user->id === $account-> > user_id인증 논리. 🎜
🎜이 인증 논리를 어떻게 실행하나요? EventServiceProvider::boot()
🎜와 같은 모델 이벤트
를 사용하여 트리거할 수 있습니다.
으아악
🎜Gate와 Policy의 관계는 Route와 Controller의 관계와 비슷합니다.
🎜巴扎黑2017-05-16 16:50:50
해외 스택오버플로우 마스터 Amit Gupta의 이메일 도움을 받은 후 이제 해결되었습니다.
1단계: 먼저 정책을 등록하고, Providers 폴더 아래 AuthServiceProvider.php에 다음과 같이 모델과 정책 간의 연결 관계를 설정합니다.
두 번째 단계는 php artisan make:policy 명령을 통해 새로운 PermissionPolicy를 생성하고 아래와 같이 함수를 통해 두 정책에 관련 권한 제어를 작성하는 것입니다.
으아악마지막 단계는 다음과 같이 컨트롤러에서 이 정책에 의해 설정된 관련 기능을 사용하는 것입니다.
으아악