


Bagaimana untuk menyediakan pengesahan untuk perkhidmatan web menggunakan rangka kerja Silex?
Silex ialah rangka kerja web ringan berdasarkan bahasa PHP Ia menyediakan satu siri komponen dan alatan untuk menjadikan pembangunan web lebih mudah dan cekap. Antaranya, pengesahan adalah salah satu pautan penting dalam membina perkhidmatan Web Ia dapat memastikan bahawa hanya pengguna yang diberi kuasa boleh mengakses perkhidmatan tersebut. Dalam rangka kerja Silex, menggunakan pengesahan memerlukan beberapa konfigurasi dan pelaksanaan kod Dalam artikel ini, kami akan memperkenalkan cara menggunakan pengesahan dalam rangka kerja Silex.
1. Idea asas
Dalam rangka kerja Silex, pengesahan boleh dicapai dengan menggunakan komponen Symfony Security. Proses asas adalah seperti berikut:
- Dapatkan maklumat identiti yang diberikan oleh pengguna, seperti nama pengguna dan kata laluan.
- Gunakan maklumat identiti yang diperolehi untuk pengesahan identiti Jika pengesahan berjaya, sijil pengesahan akan dihasilkan.
- Gunakan bukti kelayakan pengesahan untuk kawalan akses dalam permintaan seterusnya.
2. Pasang komponen yang diperlukan
Untuk menggunakan komponen Symfony Security, anda perlu memasang komponen yang diperlukan dalam rangka kerja Symfony Security dan komponen bergantung yang lain dengan mudah dipasang melalui Komposer . Cipta fail composer.json dalam direktori akar projek dan tambah kandungan berikut:
{ "require": { "silex/silex": "~2.0", "symfony/security": "^4.3" }, "autoload": { "psr-4": { "": "src/" } } }
Kemudian laksanakan arahan pemasangan komposer untuk memasang komponen bergantung.
3. Konfigurasikan maklumat pengesahan
Konfigurasi maklumat pengesahan memerlukan mentakrifkan perkhidmatan keselamatan dalam rangka kerja Silex dan menentukan pembekal identiti dan pembekal pengguna untuk perkhidmatan keselamatan ini. Pembekal identiti bertanggungjawab untuk mengesahkan maklumat identiti, dan pembekal pengguna bertanggungjawab untuk memberikan butiran pengguna Untuk aplikasi web mudah, kedua-dua perkhidmatan ini boleh menggunakan pelaksanaan yang sama. Tambahkan kod berikut pada app.php:
use SymfonyComponentSecurityCoreUserInMemoryUserProvider; use SymfonyComponentSecurityCoreUserUser; use SymfonyComponentSecurityCoreUserUserProviderInterface; $app->register(new SilexProviderSecurityServiceProvider()); $app['security.firewalls'] = array( 'secured' => array( 'pattern' => '^/secured', 'http' => true, 'users' => function() use($app){ return new InMemoryUserProvider( array( 'admin' => array('ROLE_USER', 'password') ) ); } ) ); $app['security.access_rules'] = array( array('^/secured', 'ROLE_USER') ); $app['security.role_hierarchy'] = array( 'ROLE_ADMIN' => array('ROLE_USER') ); $app['security.user_provider'] = function($app) { return new UserProvider($app['db']); }; $app['security.encoder.bcrypt'] = $app->share(function($app) { return new BCryptPasswordEncoder($app['security.encoder.bcrypt.cost']); }); $app['security.authentication_listener.factory.form'] = $app->protect(function ($name, $options) use ($app) { $app['security.authentication_provider.'.$name.'.form'] = function () use ($app) { return new FormAuthenticationProvider( $app['security.user_provider'], $app['security.encoder_factory'] ); }; $app['security.authentication_listener.'.$name.'.form'] = function () use ($app, $name, $options) { return new FormAuthenticationListener( $app['security'], $app['security.authentication_manager'], $name, $options, new UsernamePasswordFormAuthenticationEntryPoint( $app, $app['security.http_utils'], $name ), $app['logger'], $app['dispatcher'], $app['security.authentication.session_strategy'] ); }; return array( 'security.authentication_provider.'.$name.'.form', 'security.authentication_listener.'.$name.'.form', null, 'pre_auth' ); });
4. Cipta penyedia pengguna (UserProvider)
Mencipta pembekal pengguna memerlukan pelaksanaan antara muka SymfonyComponentSecurityCoreUserUserProviderInterface, yang mengandungi beberapa maklumat untuk mendapatkan kaedah maklumat pengguna . Cipta UserProvider dalam app.php dan tambahkan kod berikut:
use SymfonyComponentSecurityCoreUserUserProviderInterface; use SymfonyComponentSecurityCoreUserUserInterface; use SymfonyComponentSecurityCoreExceptionUnsupportedUserException; class UserProvider implements UserProviderInterface { private $db; public function __construct(Connection $db) { $this->db = $db; } public function loadUserByUsername($username) { $stmt = $this->db->executeQuery('SELECT * FROM users WHERE username = ?', array(strtolower($username))); if (!$user = $stmt->fetch()) { throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username)); } $rolesStmt = $this->db->executeQuery('SELECT roles.role FROM user_roles JOIN roles ON user_roles.role_id = roles.id WHERE user_id = ?', array($user['id'])); $roles = array(); while ($role = $rolesStmt->fetch(PDO::FETCH_ASSOC)) { $roles[] = $role['role']; } return new User($user['username'], $user['password'], explode(',', $user['roles']), true, true, true, true); } public function refreshUser(UserInterface $user) { if (!$user instanceof User) { throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user))); } return $user; } public function supportsClass($class) { return $class === 'SymfonyComponentSecurityCoreUserUser'; } }
Dalam kod di atas, kaedah loadUserByUsername digunakan untuk menanyakan maklumat pengguna berdasarkan nama pengguna dan peranan (peranan) yang dimiliki oleh pengguna. Kaedah refreshUser dan supportsClass adalah Pelaksanaan antara muka mesti dilaksanakan.
5. Cipta Pengawal
Mencipta Pengawal dalam rangka kerja Silex memerlukan penentuan URL peribadi yang membimbing pengguna ke halaman log masuk untuk pengesahan identiti. Jika pengesahan berjaya, pengguna akan diubah hala secara aktif ke URL asal yang diminta. Jika pengesahan gagal, mesej ralat akan diberikan dan halaman log masuk akan dipaparkan untuk mengesahkan semula.
Tambahkan kod berikut dalam app.php:
$app->match('/login', function(Request $request) use ($app){ $username = $request->request->get('_username'); $password = $request->request->get('_password'); $user = $app['security.user_provider']->loadUserByUsername($username); if (!$app['security.encoder.bcrypt']->isPasswordValid($user->getPassword(), $password, $user->getSalt())) { throw new Exception('Bad credentials'); } else { $token = new UsernamePasswordToken($user, null, 'secured', $user->getRoles()); $app['security.token_storage']->setToken($token); $request->getSession()->set('_security_secured', serialize($token)); return $app->redirect($request->headers->get('referer')); } })->bind('login'); $app->match('/secured', function() use ($app){ if (!$app['security.authorization_checker']->isGranted('ROLE_USER')){ return $app->redirect('/login'); } return 'Welcome ' . $app['security.token_storage']->getToken()->getUsername(); })->bind('secured');
Dalam kod di atas, laluan /login ialah URL peribadi, yang membolehkan pengguna menyerahkan maklumat nama pengguna dan kata laluan untuk pengesahan, dan /laluan selamat ialah Laluan dengan akses terhad. Jika pengguna mengakses laluan /secured tanpa pengesahan, mereka akan diubah hala ke halaman log masuk.
6. Ringkasan
Melalui langkah di atas, kami telah melaksanakan fungsi pengesahan identiti pengguna dalam rangka kerja Silex. Dalam proses ini, kami menggunakan komponen Symfony Security untuk melaksanakan fungsi pengesahan dan pembekal pengguna Pada masa yang sama, maklumat konfigurasi, pembekal pengguna dan Pengawal mesti dikonfigurasikan untuk melaksanakan sistem pengesahan yang lengkap. Melalui pengenalan di atas, saya berharap dapat memberi sedikit rujukan kepada pembangun yang perlu melaksanakan fungsi pengesahan dalam rangka kerja Silex.
Atas ialah kandungan terperinci Bagaimana untuk menyediakan pengesahan untuk perkhidmatan web menggunakan rangka kerja Silex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam iOS 17, Apple memperkenalkan beberapa ciri privasi dan keselamatan baharu kepada sistem pengendalian mudah alihnya, salah satunya adalah keupayaan untuk memerlukan pengesahan dua langkah untuk tab penyemakan imbas peribadi dalam Safari. Begini cara ia berfungsi dan cara mematikannya. Pada iPhone atau iPad yang menjalankan iOS 17 atau iPadOS 17, jika anda mempunyai sebarang tab Penyemakan Imbas Peribadi yang dibuka di Safari dan kemudian keluar dari sesi atau apl, penyemak imbas Apple kini memerlukan pengesahan Face ID/TouchID atau kod laluan untuk mengaksesnya semula. Dalam erti kata lain, jika seseorang mendapatkan iPhone atau iPad anda semasa ia dibuka kunci, mereka masih tidak akan dapat melihatnya tanpa mengetahui kod laluan anda

Log masuk tunggal (SSO) ialah mekanisme pengesahan yang membenarkan pengguna untuk membuat pengesahan merentas berbilang aplikasi dan tapak menggunakan satu set bukti kelayakan, seperti nama pengguna dan kata laluan. Mekanisme ini boleh meningkatkan pengalaman dan kecekapan pengguna di samping meningkatkan keselamatan. Dalam PHP, melaksanakan log masuk tunggal memerlukan beberapa kaedah khusus. Di bawah ini kami akan memperkenalkan cara melaksanakan log masuk tunggal dalam PHP. Kami akan membahagikannya kepada langkah-langkah berikut: Buat pusat pengesahan pengguna (AuthenticationCenter) menggunakan OAuth2

Dalam bidang pembangunan Web, perkhidmatan Web adalah teknologi yang sangat penting yang membolehkan aplikasi yang berbeza berkomunikasi antara satu sama lain untuk membina sistem yang lebih kompleks dan berkuasa. Dalam artikel ini, kami akan melihat secara mendalam tentang cara menggunakan PHP dan SOAP untuk melaksanakan permohonan dan pembangunan perkhidmatan web. SOAP (SimpleObjectAccessProtocol) ialah protokol berasaskan XML yang digunakan untuk pertukaran maklumat antara aplikasi yang berbeza. SOAP ialah standard perkhidmatan Web yang penting

Melaksanakan pengesahan pengguna menggunakan perisian tengah dalam rangka kerja Slim Dengan pembangunan aplikasi web, pengesahan pengguna telah menjadi ciri penting. Untuk melindungi maklumat peribadi pengguna dan data sensitif, kami memerlukan kaedah yang boleh dipercayai untuk mengesahkan identiti pengguna. Dalam artikel ini, kami akan memperkenalkan cara untuk melaksanakan pengesahan pengguna menggunakan perisian tengah rangka kerja Slim. Rangka kerja Slim ialah rangka kerja PHP ringan yang menyediakan cara yang mudah dan pantas untuk membina aplikasi web. Salah satu ciri yang berkuasa adalah bahagian tengah

Pengesahan adalah salah satu bahagian terpenting dalam mana-mana aplikasi web. Tutorial ini membincangkan sistem pengesahan berasaskan token dan cara ia berbeza daripada sistem log masuk tradisional. Pada penghujung tutorial ini, anda akan melihat demo berfungsi sepenuhnya yang ditulis dalam Angular dan Node.js. Sistem Pengesahan Tradisional Sebelum beralih kepada sistem pengesahan berasaskan token, mari kita lihat sistem pengesahan tradisional. Pengguna memberikan nama pengguna dan kata laluan mereka dalam borang log masuk dan klik Log Masuk. Selepas membuat permintaan, sahkan pengguna di bahagian belakang dengan menanyakan pangkalan data. Jika permintaan itu sah, sesi dibuat menggunakan maklumat pengguna yang diperoleh daripada pangkalan data dan maklumat sesi dikembalikan dalam pengepala respons supaya ID sesi disimpan dalam penyemak imbas. Menyediakan akses kepada aplikasi tertakluk kepada

Panduan Teknikal untuk Melaksanakan Perkhidmatan Web pada Pelayan Linux melalui Operasi Skrip Python 1. Pengenalan Dengan perkembangan pesat Internet, perkhidmatan Web telah menjadi pilihan pertama bagi banyak perusahaan dan individu. Python, sebagai bahasa pengaturcaraan yang mudah dan berkuasa, digunakan secara meluas untuk pembangunan web. Artikel ini akan memperkenalkan cara menggunakan skrip Python untuk melaksanakan perkhidmatan web pada pelayan Linux dan memberikan contoh kod khusus. 2. Persediaan Sebelum bermula, kita perlu memasang Python dan

Dengan perkembangan pesat Internet dan Internet mudah alih, semakin banyak aplikasi memerlukan pengesahan dan kawalan kebenaran, dan JWT (JSON Web Token), sebagai mekanisme pengesahan dan kebenaran yang ringan, digunakan secara meluas dalam aplikasi WEB. Beego ialah rangka kerja MVC berdasarkan bahasa Go, yang mempunyai kelebihan kecekapan, kesederhanaan dan skalabiliti Artikel ini akan memperkenalkan cara menggunakan JWT untuk melaksanakan pengesahan dalam Beego. 1. Pengenalan kepada JWT JSONWebToken (JWT) ialah a

Terdapat tujuh piawaian untuk perkhidmatan web: "Protokol HTTP", "Seni bina RESTful", "format pertukaran data", "WSDL", "SOAP", "keselamatan" dan "kebolehskalaan": 1. Protokol HTTP, Protokol HTTP penggunaan perkhidmatan Web berkomunikasi, jadi ia perlu mengikut spesifikasi protokol HTTP 2. Seni bina RESTful, digunakan untuk membina perkhidmatan Web berskala, gandingan longgar 3. Gunakan format pertukaran data tertentu untuk menghantar data; antara muka dan operasi, dsb.
