我想在不使用 Sanctum 或 Passport 的情況下實作基于 API 令牌的身份驗證系統。如何生成訪問令牌?我可以只生成一個隨機字串嗎?
uj5u.com熱心網友回復:
首先:我通常會盡可能使用 Laravel 的第一方軟體包,因為它們經過了實戰測驗,在這種情況下,Laravel Sanctum聽起來是最好的選擇。
但是,如果您必須創建自己的實作,是的,您可以簡單地生成一個隨機字串并將其存盤在連接到特定用戶的資料庫中。事實上,這就是 Sanctum 所做的:
public function createToken(string $name, array $abilities = ['*'])
{
$token = $this->tokens()->create([
'name' => $name,
'token' => hash('sha256', $plainTextToken = Str::random(40)),
'abilities' => $abilities,
]);
return new NewAccessToken($token, $token->getKey().'|'.$plainTextToken);
}
來源:https ://github.com/laravel/sanctum/blob/v2.15.1/src/HasApiTokens.php#L44-L53
在這里,它生成一個隨機字串并將哈希值保存在資料庫中。該字串經過哈希處理,因此除了用戶(甚至您)之外,沒有人可以訪問令牌。
uj5u.com熱心網友回復:
如果你想建立自己的身份驗證系統,你需要熟悉重要的安全概念,如 OAuth2、加密……如果不是這樣,強烈建議使用 Laravel 提供的腳手架解決方案之一來滿足你的需要. 如果您有問題,請隨時提出有關這些框架的問題。
否則,如果你真的想自己制作認證系統,你可以使用tymondesigns/jwt-auth庫來生成認證令牌。
祝你好運 !
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460458.html
上一篇:來自Google應用腳本的BaselinkerApi呼叫
下一篇:如何從特定網址獲取文本?
