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

Keizinan: Memahami Dasar dalam Laravel

Oct 18, 2024 pm 10:08 PM

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Apr 06, 2025 am 12:02 AM

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Apakah penghitungan (enums) dalam Php 8.1? Apakah penghitungan (enums) dalam Php 8.1? Apr 03, 2025 am 12:05 AM

Fungsi penghitungan dalam Php8.1 meningkatkan kejelasan dan jenis keselamatan kod dengan menentukan pemalar yang dinamakan. 1) Penghitungan boleh menjadi bilangan bulat, rentetan atau objek, meningkatkan kebolehbacaan kod dan keselamatan jenis. 2) Penghitungan adalah berdasarkan kelas dan menyokong ciri-ciri berorientasikan objek seperti traversal dan refleksi. 3) Penghitungan boleh digunakan untuk perbandingan dan tugasan untuk memastikan keselamatan jenis. 4) Penghitungan menyokong penambahan kaedah untuk melaksanakan logik kompleks. 5) Pemeriksaan jenis dan pengendalian ralat yang ketat boleh mengelakkan kesilapan biasa. 6) Penghitungan mengurangkan nilai sihir dan meningkatkan keupayaan, tetapi memberi perhatian kepada pengoptimuman prestasi.

Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Apr 03, 2025 am 12:04 AM

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara debug mod CLI dalam phpstorm? Bagaimana cara debug mod CLI dalam phpstorm? Apr 01, 2025 pm 02:57 PM

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Apr 01, 2025 pm 03:12 PM

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

See all articles