如何使用Laravel 5.4注销并重定向到登录页面?
2022-08-30 08:46:45
我正在使用Laravel 5.4并尝试实现身份验证系统。我使用php artisan命令make:auth来设置它。我根据我的布局编辑了视图。现在,当我尝试注销时,它会给我带来此错误
NotFoundHttpException in RouteCollection.php 161行:
任何人都可以帮我如何注销吗?
我正在使用Laravel 5.4并尝试实现身份验证系统。我使用php artisan命令make:auth来设置它。我根据我的布局编辑了视图。现在,当我尝试注销时,它会给我带来此错误
NotFoundHttpException in RouteCollection.php 161行:
任何人都可以帮我如何注销吗?
在您的(路线)中:web.php
加:
Route::get('logout', '\App\Http\Controllers\Auth\LoginController@logout');
在您的LoginController.php
加:
public function logout(Request $request) {
Auth::logout();
return redirect('/login');
}
另外,在 的顶部,之后LoginController.php
namespace
加:
use Auth;
现在,您可以使用URL注销,或者如果您已经创建了,则将href添加到yourdomain.com/logout
logout button
/logout
好吧,即使@Tauras的建议只是有效,我也不认为这是处理这个问题的正确方法。
您说您已经运行了,这应该也插入到您的路由文件中。它附带了已定义的默认路由,并命名为 。php artisan make:auth
Auth::routes();
routes/web.php
logout
logout
你可以在 GitHub 上看到它,但为了简单起见,我也会在这里报告代码:
/**
* Register the typical authentication routes for an application.
*
* @return void
*/
public function auth()
{
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');
}
然后再次请注意,需要作为HTTP请求方法。这背后有很多有效的理由,但仅举一个非常重要的原因是,通过这种方式,您可以防止跨站点请求伪造。logout
POST
因此,根据我刚刚指出的正确实现方法,这可能只是这样的:
<a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('frm-logout').submit();">
Logout
</a>
<form id="frm-logout" action="{{ route('logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
最后请注意,我已经插入了开箱即用的准备功能!{{ csrf_field() }}