Laravel Passport刷新令牌存储

问题描述 投票:0回答:1

我正在使用带有Svelte前端的Passport password grant tokens。我可以很好地创建和访问令牌,也可以使用刷新令牌。我的问题是安全存储刷新令牌。理想情况下,Laravel只需将刷新令牌作为cookie返回,然后在/oauth/token路由上接受该cookie。

我什至可以创建cookie客户端,但仍然必须弄清楚如何使Laravel对其进行解析。我想没有一种简单的方法可以使laravel发送cookie或接受刷新令牌的cookie?

如果没有,我应该如何存储刷新令牌?当前仅将其存储在可读的cookie中,但这使其对攻击不利。希望某些东西能够持续刷新,因此会产生Cookie。任何建议都很棒!

laravel cookies oauth laravel-passport svelte
1个回答
0
投票

经过大量的整理后,我找到了解决方案。我使用两个中间件附加一个cookie并读取该cookie:

附加Cookie中间件:

public function handle($request, Closure $next)
{
    $response = $next($request);
    if (request()->is("oauth/token")) {
        $json = json_decode($response->getContent(), false);
        $token = $json->refresh_token;
        if ($token) {
            return ($response)->cookie('refresh_token', $token, 15);
        }}
return $response;}

阅读Cookie中间件:

 public function handle($request, Closure $next)
{
    if (request()->is("oauth/token")) {
        if ($request->hasCookie('refresh_token')) {
            $token = $request->cookie('refresh_token');
            $request->request->add(['refresh_token' => $token]);
        }}
    return $next($request);}

如果您有关于优化的任何想法,特别是Attach Cookie中间件中的解码json位,那将很棒!

我还必须在受保护的中间件内核类中添加这些中间件,因为护照oauth / token路径显然不是Web路由?是否有一种简单的方法将这两个中间件仅应用于Passport路由?

© www.soinside.com 2019 - 2024. All rights reserved.