Laravel Fortify 注销重定向

时间:2021-01-21 07:30:52

标签: laravel

大家好,有什么办法可以重定向Fortify的注销功能吗?

<div class="nav-link" id="nav-bar-logoutbutton">                       
        <form method="POST" action="{{ route('logout') }}">
            @csrf
            <button class="btn btn-secondary btn-sm" type="submit">Logout</button>
        </form>
    </div>

这是我的刀片注销

2 个答案:

答案 0 :(得分:6)

您可以执行以下操作:

创建一个新的 LogoutResponse 类并将您的重定向逻辑实现到 toResponse 方法中:

“app/Http/Responses/LogoutResponse.php”

<?php

namespace App\Http\Responses;

use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Laravel\Fortify\Contracts\LogoutResponse as LogoutResponseContract;
use Symfony\Component\HttpFoundation\Response;

class LogoutResponse implements LogoutResponseContract
{
    /**
     * Create an HTTP response that represents the object.
     *
     * @param Request $request
     *
     * @return Response
     */
    public function toResponse($request)
    {
        return $request->wantsJson()
            ? new JsonResponse('', 204)
            : redirect('www.example.com');
    }
}

现在您可以在 bootFortifyServiceProvider 方法中将新响应绑定到服务容器中:

“app/Providers/FortifyServiceProvider.php”

public function boot()
{
    $this->app->singleton(
        \Laravel\Fortify\Contracts\LogoutResponse::class,
        \App\Http\Responses\LogoutResponse::class
    );
}

答案 1 :(得分:0)

只需在您的 routes/web.php

中创建一个新的帖子请求
Route::post('logout', [ClientController::class, 'logout'])->name('logout');

现在在您的控制器中,创建一个函数来处理请求,确保在顶部包含 Auth 类。

use Auth;

/* Process the logout request */
public function logout(Request $request) {
        Auth::logout();
        return redirect('/login')->with(['msg_body' => 'You signed out!']);
}

您可以重定向到任何地方,而不是 /login

相关问题