Rumah > Soal Jawab > teks badan
Apabila anda sedang menggunakan rangka kerja pembangunan MVC, apabila menyemak kesahihan teks input pengguna pada bahagian hadapan pengguna, apabila pengguna menyerahkan, adakah ini harus dikendalikan oleh lapisan C atau lapisan M?
某草草2017-05-16 17:08:31
Saya harus bersetuju dengan kenyataan Yi Wei Izinkan saya menambah pemahaman saya untuk memastikan pengalaman pengguna, supaya pengguna tidak akan menemui ralat selepas penyerahan dan kembali untuk membetulkannya data itu sendiri. Pengesahan (sama ada data milik pengguna, dan sama ada perubahan status data memenuhi keperluan logik), M berurus niaga untuk memastikan kewujudan data, jika data tidak wujud, tidak perlu pergi ke bawah , mesti tak normal.
过去多啦不再A梦2017-05-16 17:08:31
Soalan ini perlu dianalisis dalam kombinasi dengan aplikasi tertentu, bahasa tertentu dan rangka kerja tertentu, malah berkaitan dengan gaya dan komposisi ahli pasukan.
Saya secara peribadi lebih suka M untuk melakukan logik pengesahan, membuang pengecualian, dan kemudian C untuk menangkap dan menukarnya kepada format yang diperlukan oleh bahagian hadapan untuk output. Kod awal ini mungkin agak bertele-tele, tetapi ia lebih bermanfaat kepada integriti logik dan pengembangan kemudian.
Pendekatan lain ialah mewujudkan lapisan logik yang dipanggil antara M dan C untuk mengendalikan logik pengesahan dan sebahagian daripada logik perniagaan
PHP中文网2017-05-16 17:08:31
Secara amnya, dalam rangka kerja MVC, lapisan perkhidmatan akan ditambah berdasarkan pemprosesan perniagaan Model akan dipetakan atau dibuang terus dan tulis DAO Okay, sekarang mari kita bincangkan tentang lapisan mana pengesahan dilakukan. Yang paling betul Kaedah adalah pengawal kedua-dua lapisan C dan lapisan perkhidmatan S mesti dilakukan, kerana apabila laman web berkembang, ia pasti perlu untuk memisahkan perkhidmatan sebagai komponen perkhidmatan awam untuk panggilan jauh, jadi jika anda tidak melakukan pengesahan pada lapisan pengawal , akan ada Untuk permintaan data, anda terus menghantarnya ke perkhidmatan awam Jika terdapat masalah dengan data, dan kemudian mengembalikan ralat, ini jelas akan membazirkan IO rangkaian Jadi jika anda telah melakukan pengesahan data di peringkat pengawal , apabila data tidak betul , buang pengecualian terus, tidak perlu membuat panggilan jauh melalui RPC
習慣沉默2017-05-16 17:08:31
Ini pasti bergantung pada situasi:
Model gemuk, pengawal kurus.
天蓬老师2017-05-16 17:08:31
Pengekodan Echang mempunyai prinsip: antara muka tidak mempercayai satu sama lain.
世界只因有你2017-05-16 17:08:31
Jika anda menulis sendiri tanpa sebarang rangka kerja, ia sepatutnya tergolong dalam lapisan c. Tetapi lebih banyak rangka kerja cenderung diletakkan dalam lapisan m.
Selain itu, jangan hanya melakukan pengesahan input pada lapisan v Bahan bahagian hadapan boleh dipintas dengan mudah, yang menimbulkan risiko keselamatan.
阿神2017-05-16 17:08:31
Setiap lapisan mesti dilakukan dengan penekanan yang berbeza.
Kami biasanya menambah lapisan Perkhidmatan antara C-M MVC (tetapi ia juga boleh difahami sebagai sebahagian daripada C atau M Lapisan ini direka bentuk untuk dipisahkan daripada View dan Controller, dan boleh dilucutkan secara bebas ke luar). API).
Jadi,
Dalam Paparan, lakukan semakan kesahihan yang agak lemah bagi satu nilai,
Dalam Pengawal, sahkan kesahihan paket permintaan luaran dan sahkan beberapa kebenaran antara muka pengguna
Lakukan pengesahan kesahihan data yang ketat, pengesahan kekangan logik perniagaan dan pengesahan kebenaran data pengguna dalam Perkhidmatan
Lakukan pengesahan kesahihan fizikal data dalam Model.
天蓬老师2017-05-16 17:08:31
Jika subjek telah menggunakan rangka kerja seperti Django atau Flask Python, anda akan mendapati terdapat juga kelas Borang. Secara umumnya, logik pengesahan kandungan pengguna akan diletakkan dalam kelas Borang. Kerana kadangkala, kita mungkin perlu membuat peraturan pengesahan yang berbeza untuk model Data yang sama mengikut situasi yang berbeza. Sudah tentu, Django juga menyokong pengesahan lapisan model. Secara relatifnya. Lapisan Borang melakukan ini dengan tahap gandingan yang lebih rendah.
習慣沉默2017-05-16 17:08:31
MVC mudah biasanya melakukan pengesahan FORM pada lapisan model, manakala penyelesaian yang lebih matang biasanya memisahkan FORM sebagai contoh, ia mempunyai lapisan FORM dan disepadukan ke dalam lapisan model pelaksanaan fungsi nampaknya tiada kaitan dengan lapisan model.
PHPz2017-05-16 17:08:31
Malah, semakan kesahihan juga dibahagikan kepada bahagian tempatan dan pelayan.
Sebagai contoh, jika input kosong, ia diperiksa pada lapisan V jika format input tidak betul, ia diperiksa pada lapisan M.
Jika anda ingin menyemak lebih lanjut sama ada ia layak, anda boleh meletakkannya pada lapisan M dan menyemaknya dengan mengakses pelayan.