cari

Rumah  >  Soal Jawab  >  teks badan

Mencari kod lengkap tentang aplikasi sebenar dasar laravel

Salam semua, saya terperangkap dalam proses pembelajaran polisi laravel Saya tahu perbezaan antara polisi laravel dan perisian tengah, tetapi saya masih tidak tahu bagaimana untuk menggunakan polisi itu banyak,
Ini adalah jawapan imej tentang dasar yang saya temui di stackoverflow, http://stackoverflow.com/ques...

Maka ini adalah kod yang saya simpan di github semasa saya berlatih Jika ada sesiapa yang sudi menambah fungsi dasar pada kod saya, saya amat berterima kasih. Anda boleh menggunakan dasar untuk melakukan sebarang fungsi, asalkan anda menambahkan dasar padanya
https://github.com/GoogleYY/s...

黄舟黄舟2796 hari yang lalu504

membalas semua(2)saya akan balas

  • PHP中文网

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

    Dasar dan Gate boleh digunakan bersama, ia tidak rumit. Policy didaftarkan dalam AuthServiceProvider Jika anda mendaftarkan AccountPolicy::class => keizinan. Tambah, padam, ubah suai dan semak Model Akaun. 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的关系。

    Dalam AccountPolicy, tulis logik kebenaran untuk menambah, memadam, mengubah suai dan menyemak operasi, seperti $user->id === $account-> kod> operasi user_idLogik kebenaran. 🎜 🎜Bagaimana untuk mencetuskan logik kebenaran ini? Ia boleh dicetuskan menggunakan Model Event, seperti dalam EventServiceProvider::boot()🎜 rrreee 🎜Hubungan antara Gate dan Policy adalah serupa dengan hubungan antara Route dan Controller.
    🎜

    balas
    0
  • 巴扎黑

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

    Selepas bantuan e-mel daripada master stackoverflow asing Amit Gupta, ia kini diselesaikan.
    Langkah 1: Daftar dahulu polisi dan wujudkan hubungan sambungan antara Model dan dasar dalam AuthServiceProvider.php di bawah folder Providers, seperti berikut:

    protected $policies = [
            \App\Models\Role::class => \App\Policies\RolePolicy::class,
            \App\Models\Permission::class => \App\Policies\PermissionPolicy::class,
        ];

    Langkah kedua ialah membuat PermissionPolicy baharu melalui perintah php artisan make:policy, dan tulis kawalan kebenaran yang berkaitan ke dalam dua dasar melalui fungsi, seperti ditunjukkan di bawah:

    class PermissionPolicy
    {
    public function before($user, $ability) {
            if ($user->hasRole('admin')) {
                return true;
            }
        }
        
    public function create(\App\Models\User $user, \App\Models\Permission $permission)
        {
            return $user->hasPermission('permission.create');
        }
    }

    Langkah terakhir ialah menggunakan fungsi berkaitan yang ditetapkan oleh dasar ini dalam pengawal, seperti berikut:

    class PermissionController extends Controller {
        public function create() {
            $this->authorize('create', new \App\Models\Permission);
            return view('permissions.create');
        }
    }

    balas
    0
  • Batalbalas