Rumah > rangka kerja php > Laravel > teks badan

Repositori Token Laravel?

PHPz
Lepaskan: 2023-03-31 16:23:49
asal
721 orang telah melayarinya

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:

  1. Menyimpan Token ke dalam jadual pengguna

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,
    ]);
}
Salin selepas log masuk

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.

  1. Menyimpan Token dalam jadual token yang berasingan

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'],
]);
Salin selepas log masuk

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 验证通过
}
Salin selepas log masuk

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!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!