Dalam rangka kerja Laravel, tugasan bukan kelompok ialah ciri keselamatan yang penting, yang membantu menghalang pengguna berniat jahat daripada mengganggu data pangkalan data. Walau bagaimanapun, ciri ini kadangkala mempunyai kegunaan yang tidak jelas, menyebabkan kekeliruan di kalangan ramai pengaturcara.
Semasa penugasan kelompok, pengaturcara menyimpan data borang terus ke dalam pangkalan data melalui kaedah cipta atau kemas kini. Jika tiada pengesahan dilakukan, risiko yang besar akan berlaku akibat ancaman serius seperti serangan dan suntikan penggodam. Untuk menyelesaikan masalah ini, Laravel memperkenalkan ciri yang melumpuhkan tugasan kelompok.
Tugasan bukan kelompok bermakna apabila menggunakan kaedah cipta atau kemas kini, jika tiada medan yang dibenarkan untuk disimpan dinyatakan, program akan menapis semua medan haram secara automatik. Ciri ini bukan sahaja meningkatkan keselamatan program, tetapi juga mengukuhkan kekangan pembangunan pada pengaturcara: hanya medan yang dibenarkan secara jelas boleh disimpan ke pangkalan data.
Ciri ini boleh didayakan dengan baris kod yang sangat mudah. Gunakan atribut $guarded dalam model yang perlu melarang penugasan kelompok.
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $guarded = []; }
Dalam contoh, sifat $guarded ialah tatasusunan kosong, bermakna semua medan boleh diedit.
Jika anda ingin membenarkan hanya medan tertentu disimpan, anda boleh menetapkan atribut $guarded kepada tatasusunan yang mengandungi semua medan yang tidak dibenarkan untuk diedit atau gunakan atribut $fillable.
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $fillable = ['name', 'email', 'password']; }
Pendekatan yang lebih baik ialah melakukan pengesahan data dalam pengawal dan kemudian menyimpannya ke pangkalan data selepas pengesahan. Ini boleh mengelakkan beberapa salah operasi dan isu keselamatan.
<?php namespace App\Http\Controllers; use App\User; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { $validatedData = $request->validate([ 'name' => 'required|string', 'email' => 'required|email|unique:users', 'password' => 'required|confirmed', ]); $user = User::create($validatedData); return back()->with('success', 'User created successfully.'); } }
Semua medan input disahkan di sini melalui kaedah pengesahan. Jika pengesahan berjaya, ia disimpan ke pangkalan data. Kod di atas bukan sahaja sangat selamat, tetapi juga sangat elegan.
Secara amnya, tugasan bukan kelompok Laravel ialah mekanisme sempurna yang boleh meningkatkan keselamatan program dengan berkesan. Kita harus memanfaatkan ciri ini sebaik mungkin untuk mengelakkan risiko yang tidak perlu dalam pembangunan.
Atas ialah kandungan terperinci Bagaimana untuk membolehkan ciri 'lumpuhkan tugasan kelompok' dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!