Rumah > pembangunan bahagian belakang > tutorial php > Keizinan: Memahami Dasar dalam Laravel

Keizinan: Memahami Dasar dalam Laravel

Linda Hamilton
Lepaskan: 2024-10-18 22:08:31
asal
441 orang telah melayarinya

Mengawal perkara yang boleh atau tidak boleh dilakukan oleh pengguna dalam aplikasi anda ialah salah satu perkara paling penting yang perlu anda lakukan semasa membina aplikasi dunia sebenar.

Sebagai contoh, dalam aplikasi todo, anda tidak mahu pengguna boleh mengedit atau memadam todo pengguna lain.

Dalam artikel ini, anda akan mempelajari salah satu cara yang lancar untuk melakukan ini dalam Laravel dengan menggunakan dasar untuk mengawal perkara yang boleh dilakukan pengguna dengan membina aplikasi todo yang mudah.

Untuk mengikuti tutorial ini, anda perlu mempunyai pemahaman asas tentang Laravel dan struktur aplikasinya.

Buat Aplikasi Asas

Jalankan arahan berikut untuk mencipta aplikasi Laravel baharu dalam folder yang anda inginkan dan pindah ke dalamnya:

composer create-project laravel/laravel todo-app && cd todo-app
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seterusnya, jalankan arahan berikut untuk memasang Laravel Breeze:

php artisan breeze:install
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Breeze akan memperancah aplikasi baharu anda dengan pengesahan supaya pengguna anda boleh mendaftar, log masuk, log keluar dan melihat papan pemuka mereka yang diperibadikan.

Selepas itu, susun aset aplikasi anda dengan menjalankan arahan berikut:

npm install && npm run dev
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Laravel disertakan dengan pangkalan data SQLite berasaskan fail secara lalai, jadi perkara seterusnya yang perlu anda lakukan ialah menyambungkan fail pangkalan data aplikasi anda kepada pemapar pangkalan data seperti TablePlus atau mana-mana yang anda suka.

Selepas menyambungkan pangkalan data anda kepada pemapar, jalankan arahan berikut untuk memindahkan jadual yang tersedia ke dalam pangkalan data anda:

php artisan migrate
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setelah itu selesai, jalankan arahan berikut untuk melihat aplikasi anda dalam penyemak imbas:

php artisan serve
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Anda kini sepatutnya melihat aplikasi Laravel baharu anda di localhost:8000 kelihatan seperti ini:

Authorization: Understanding Policies in Laravel

Anda kini boleh pergi ke halaman daftar untuk mencipta pengguna dan mengakses papan pemuka, iaitu keseluruhan aplikasi pada ketika ini.

Persediaan Model

Model dalam Laravel digunakan untuk mengawal jadual pangkalan data. Gunakan arahan berikut untuk mencipta model Todo dalam folder App/Models:

php artisan make:model Todo
Salin selepas log masuk
Salin selepas log masuk

Seterusnya, di dalam fail yang baru dibuat, gantikan kelas Todo dengan kod berikut:

class Todo extends Model
{
    use HasFactory;

    protected $fillable = [
        'title',
        'description',
        'completed',
        'user_id'
    ];

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}
Salin selepas log masuk
Salin selepas log masuk

Kod di atas akan membolehkan pengguna menyerahkan borang dengan sifat $fillable; ia juga mentakrifkan hubungan antara pengguna dan Todo; dalam kes ini, todo kepunyaan pengguna. Mari lengkapkan persediaan perhubungan dengan menambahkan kod berikut pada fail App/Models/User.php:

    public function todos()
    {
        return $this->hasMany(Todo::class);
    }
Salin selepas log masuk
Salin selepas log masuk

Kod di atas akan menyambungkan model Pengguna kepada model Todo supaya ia boleh mempunyai banyak tugasan.

Persediaan Migrasi

Migrasi dalam Laravel digunakan untuk menentukan perkara yang sepatutnya ada dalam jadual pangkalan data. Jalankan arahan berikut untuk mencipta migrasi di dalam folder pangkalan data/penghijrahan:

composer create-project laravel/laravel todo-app && cd todo-app
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seterusnya, gantikan fungsi atas dalam fail baharu dengan yang berikut yang akan menambah jadual todo pada pangkalan data dengan lajur id, user_id, tajuk, perihalan, lengkap dan cap masa:

php artisan breeze:install
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seterusnya, jalankan arahan berikut untuk menambah jadual todos ke pangkalan data:

npm install && npm run dev
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Persediaan Dasar

Dasar dalam Laravel membolehkan anda menentukan siapa yang boleh melakukan apa dengan sumber tertentu, dalam kes ini, todos.

Mari kita lihat cara ia berfungsi dengan menjana TodoPolicy di dalam folder App/Policies menggunakan arahan berikut:

php artisan migrate
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seterusnya, dalam fail TodoPolicy yang baru dibuat, gantikan kelas TodoPolicy dengan kod berikut:

php artisan serve
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kod di atas menyatakan bahawa pengguna boleh membuat todo, tetapi hanya boleh melihat, mengemas kini atau memadam todo kepunyaan mereka.

Seterusnya, mari sediakan pengawal di bahagian seterusnya.

Persediaan Pengawal

Pengawal dalam Laravel mengawal kefungsian apl untuk sumber tertentu. Jalankan arahan berikut untuk menjana TodoController di dalam App/Http/Controllers:

php artisan make:model Todo
Salin selepas log masuk
Salin selepas log masuk

Tambahkan kod berikut pada bahagian atas fail TodoController yang baru dibuat untuk mengimport model Todo untuk operasi pangkalan data dan kelas Gate untuk kebenaran:

class Todo extends Model
{
    use HasFactory;

    protected $fillable = [
        'title',
        'description',
        'completed',
        'user_id'
    ];

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}
Salin selepas log masuk
Salin selepas log masuk

Kaedah Indeks

Ganti kaedah indeks dengan kod berikut yang mengambil dan mengembalikan semua tugasan pengguna yang log masuk:

    public function todos()
    {
        return $this->hasMany(Todo::class);
    }
Salin selepas log masuk
Salin selepas log masuk

Kaedah The Gate::authorize mengesahkan bahawa pengguna telah log masuk menggunakan kaedah viewAny policy yang anda takrifkan dalam bahagian sebelumnya.

Buat Kaedah

Ganti kaedah buat dengan kod berikut yang mengesahkan pengguna telah log masuk sebelum mengembalikan borang buat todo kepada pengguna supaya mereka boleh membuat todos:

php artisan make:migration create_todos_table
Salin selepas log masuk

Kaedah Kedai

Ganti kaedah kedai dengan kod berikut yang menyemak sama ada pengguna boleh membuat todo, mengesahkan permintaan, membuat todo dan mengubah hala pengguna ke halaman senarai todo:

   public function up(): void
    {
        Schema::create('todos', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained()->onDelete('cascade');
            $table->string('title');
            $table->text('description')->nullable();
            $table->boolean('completed')->default(false);
            $table->timestamps();
        });
    }
Salin selepas log masuk

Kaedah Edit

Ganti kaedah edit dengan kod berikut yang mengesahkan pengguna boleh mengedit todo itu sebelum mengembalikan borang edit todo yang diisi dengan todo yang dipilih kepada pengguna supaya mereka boleh mengeditnya:

php artisan migrate
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kaedah Kemas Kini

Ganti kaedah kemas kini dengan kod berikut yang menyemak sama ada pengguna boleh mengemas kini todo, mengesahkan permintaan, mengemas kini todo yang dipilih dan mengubah hala pengguna ke halaman senarai todo:

php artisan make:policy TodoPolicy --model=Todo
Salin selepas log masuk

Kaedah Musnah

Ganti kaedah musnah dengan kod berikut yang menyemak sama ada pengguna boleh memadamkan todo, memadamkannya dan mengubah hala pengguna ke halaman senarai todo:

class TodoPolicy
{
    /**
     * Determine if the user can view any todos.
     */
    public function viewAny(User $user): bool
    {
        return true;
    }

    /**
     * Determine if the user can view the todo.
     */
    public function view(User $user, Todo $todo): bool
    {
        return $user->id === $todo->user_id;
    }

    /**
     * Determine if the user can create todos.
     */
    public function create(User $user): bool
    {
        return true;
    }

    /**
     * Determine if the user can update the todo.
     */
    public function update(User $user, Todo $todo): bool
    {
        return $user->id === $todo->user_id;
    }

    /**
     * Determine if the user can delete the todo.
     */
    public function delete(User $user, Todo $todo): bool
    {
        return $user->id === $todo->user_id;
    }
}
Salin selepas log masuk

Fail TodoController anda kini sepatutnya kelihatan seperti ini:

composer create-project laravel/laravel todo-app && cd todo-app
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Persediaan Pandangan

Sekarang kaedah TodoController anda sudah siap, anda kini boleh membuat paparan untuk aplikasi anda dengan mencipta folder todos baharu di dalam folder sumber/pandangan. Selepas itu, buat fail create.blade.php, edit.blade.php, index.blade.php dalam folder todos baharu.

Paparan Indeks

Tampal kod berikut di dalam index.blade.php:

php artisan breeze:install
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Cipta Paparan

Tampal kod berikut di dalam create.blade.php:

npm install && npm run dev
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Edit Paparan

Tampal kod berikut di dalam edit.blade.php:

php artisan migrate
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Persediaan Laluan

Mengendalikan laluan untuk TodoController anda agak mudah menggunakan kaedah sumber dalam Laravel. Lakukan itu dengan menambah kod berikut pada penghujung folder route/web.php seperti:

php artisan serve
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kod di atas menggunakan perisian tengah auth untuk melindungi sumber todos. Anda kini sepatutnya boleh melawati laluan berikut dalam aplikasi anda selepas log masuk:

  • /todos: Senaraikan semua todos pengguna
  • /todos/create: Menunjukkan borang untuk membuat todos
  • /todos/edit/1: Menunjukkan borang untuk mengedit todo dengan id yang diberikan; 1 dalam kes ini.

Kini anda boleh membuat, mengedit dan memadam todos, TETAPI hanya sebagai pengguna log masuk dan pemilik todos yang dipilih dalam hal mengedit dan memadam.

Kesimpulan

Dan itu sahaja! Anda baru sahaja mencipta aplikasi todo realistik yang membenarkan pengguna membuat, melihat, mengedit dan memadam SAHAJA todo mereka sendiri. Sila beritahu saya jika anda mempunyai sebarang pembetulan, cadangan atau soalan dalam ulasan!

Akhir sekali, ingat untuk mengikuti saya di sini di Dev, LinkedIn dan Twitter. Terima kasih banyak kerana membaca, dan jumpa lagi pada yang seterusnya!

Atas ialah kandungan terperinci Keizinan: Memahami Dasar dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan