Mencari kod lengkap tentang aplikasi sebenar dasar laravel
黄舟
黄舟 2017-05-16 16:48:50
0
2
486

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...

黄舟
黄舟

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

membalas semua(2)
洪涛

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. 🎜
巴扎黑

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');
    }
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan