라라벨 정책의 실제 적용에 대한 완전한 코드를 찾고 있습니다.
黄舟
黄舟 2017-05-16 16:48:50
0
2
442

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

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(2)
洪涛

정책게이트를 함께 사용할 수 있어 복잡하지 않습니다. 정책은 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의 관계와 비슷합니다. 🎜
巴扎黑

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

으아악

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

으아악

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

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!