찾다

 >  Q&A  >  본문

라라벨 정책의 실제 적용에 대한 완전한 코드를 찾고 있습니다.

안녕하세요 여러분, 라라벨 정책을 배우는 과정에서 막혔습니다. 라라벨 정책과 미들웨어의 차이점은 알지만 아직 정책을 어떻게 적용해야 할지 모르겠습니다. 진행자가 완전한 소규모 프로그램을 제공해 주실 수 있나요?
이것은 제가 stackoverflow, http://stackoverflow.com/ques...에서 찾은 정책에 대한 이미지 답변입니다...

그럼 제가 연습할 때 github에 저장해 두었던 코드입니다. 혹시 제 코드에 정책 기능을 추가해주실 분 계시다면 정말 감사하겠습니다. 정책을 추가하기만 하면 정책을 사용하여 모든 기능을 수행할 수 있습니다
https://github.com/GoogleYY/s...

黄舟黄舟2797일 전506

모든 응답(2)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-05-16 16:50:50

    정책게이트를 함께 사용할 수 있어 복잡하지 않습니다. 정책은 AuthServiceProvider에 등록되어 있습니다. AccountPolicy::class => Account::class를 등록하면 현재 User계정모델을 추가, 삭제, 수정하고 확인하세요. PolicyGate结合起来使用就行,不复杂。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의 관계와 비슷합니다. 🎜

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-16 16:50:50

    해외 스택오버플로우 마스터 Amit Gupta의 이메일 도움을 받은 후 이제 해결되었습니다.
    1단계: 먼저 정책을 등록하고, Providers 폴더 아래 AuthServiceProvider.php에 다음과 같이 모델과 정책 간의 연결 관계를 설정합니다.

    으아악

    두 번째 단계는 php artisan make:policy 명령을 통해 새로운 PermissionPolicy를 생성하고 아래와 같이 함수를 통해 두 정책에 관련 권한 제어를 작성하는 것입니다.

    으아악

    마지막 단계는 다음과 같이 컨트롤러에서 이 정책에 의해 설정된 관련 기능을 사용하는 것입니다.

    으아악

    회신하다
    0
  • 취소회신하다