大家好,有什么办法可以重定向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>
这是我的刀片注销
答案 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');
}
}
现在您可以在 boot
的 FortifyServiceProvider
方法中将新响应绑定到服务容器中:
“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
。