Rumah > Artikel > rangka kerja php > Repositori Token Laravel?
Adakah Laravel Token ada dalam stok?
Dalam Laravel, Token sering digunakan untuk pengesahan. Token pada asasnya ialah rentetan yang disulitkan yang biasanya diberikan oleh pelayan kepada pelanggan dan dibawa dengan setiap permintaan daripada pelanggan untuk mengesahkan identitinya. Jadi persoalannya, adakah Token Laravel perlu disimpan dalam pangkalan data?
Jawapannya tidak semestinya. Dalam beberapa aplikasi mudah, kami boleh terus menyimpan Token pada klien dalam bentuk kuki atau sesi untuk pengesahan. Walau bagaimanapun, jika kami perlu melaksanakan beberapa perkhidmatan yang lebih kompleks, seperti log masuk merentas peranti, penyegerakan berbilang peranti, dll., kami perlu menyimpan Token dalam pangkalan data untuk pengurusan yang berkesan.
Terdapat banyak kaedah pelaksanaan yang berbeza untuk storan Token Laravel. Dua kaedah biasa akan diperkenalkan di bawah:
Ini adalah cara paling mudah. Apabila pengguna mendaftar atau log masuk, pelayan menjana Token dan menyimpannya dalam jadual pengguna. Setiap kali pengguna log masuk, kami boleh mendapatkan semula Token pengguna daripada pangkalan data untuk pengesahan.
$user = User::where('email', $email)->first(); if ($user && Hash::check($password, $user->password)) { // 验证成功,将 Token 存储到数据库中 $user->api_token = Str::random(60); $user->save(); return response()->json([ 'status' => 'success', 'message' => 'Authentication successfully!', 'token' => $user->api_token, ]); }
Kelebihan kaedah ini ialah ia mudah untuk dilaksanakan dan mudah difahami. Tetapi jika semakin banyak Token, kecekapan menyoal data pengguna akan berkurangan. Oleh itu, adalah tidak sesuai jika bilangan pengguna ramai.
Kaedah ini menyimpan Token dalam jadual berasingan, dan setiap Token dikaitkan dengan ID pengguna. Apabila pengguna log masuk, pelayan menjana Token untuk pengguna dan kemudian menyimpan Token dalam jadual token.
$token = [ 'access_token' => hash('sha256', Str::random(60)), 'token_type' => 'Bearer', 'expires_in' => 3600, 'refresh_token' => hash('sha256', Str::random(60)), 'user_id' => $user->id, ]; DB::table('tokens')->insert($token); return response()->json([ 'status' => 'success', 'message' => 'Authentication successfully!', 'token' => $token['access_token'], ]);
Dalam antara muka yang memerlukan pengesahan, kami boleh mendapatkan ID pengguna daripada Token yang dihantar oleh pelanggan, dan kemudian menanyakan jadual token untuk melihat sama ada terdapat Token yang dikaitkan dengan ID pengguna.
$token = DB::table('tokens') ->where('access_token', $access_token) ->where('user_id', $user_id) ->first(); if ($token) { // Token 验证通过 }
Kaedah ini agak fleksibel, mudah dikembangkan dan mempunyai kecekapan pertanyaan yang tinggi.
Ringkasnya, kaedah penyimpanan Token Laravel berbeza-beza bergantung pada keperluan perniagaan, dan anda boleh memilih kaedah pelaksanaan yang berbeza mengikut keadaan tertentu. Perlu diingatkan bahawa jika disimpan dalam pangkalan data, Token yang telah tamat tempoh mesti dibersihkan tepat pada masanya untuk mengelakkan pembaziran sumber yang tidak perlu.
Atas ialah kandungan terperinci Repositori Token Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!