내가 사용하 Laravel5.4 을 구현하기 위해 노력하고 인증 시스템을 가지고 있습니다. 내가 사용되는 php 장인들에게 명령:인증을 설정니다. 진 전망에 따르면 나의 레이아웃이 있습니다. 지금,내가 때려서 로그아웃 그것은 나에게 던져 이러
NotFoundHttpException 에 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
후,네임스페이스
추가
use Auth;
지금,당신이 할 수있는 로그아웃을 사용하여yourdomain.com/logout
또는 URL 을 만든 경우로그아웃
버튼을 추가,href 하/로그아웃
는 경우에도 마찬가지 무엇에 의하여 건@Tauras 모 don't think it's 올바른 방법이다.
당신은 당신이 말했다 실행php 장인들에게 auth
을 가지고 있어야 하는 또한 삽입된Auth::로();에서
당신의routes/web.php
라우 파일이 있습니다. 와 함께 제공되는 기본logout
로를 이미 정의의 이름을 따서 명명logout
.
할 수 있여기를 참조하십시오 on 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');
}
그런 다음 다시 참고하는logout
이 필요합POST
HTTP 요청 방법입니다. 많은 유효한 이 뒤에 이유이지만,그냥 언급하 하나의 아주 중요한 것은 이 방법으로 방지할 수 있습니다교차 사이트 요청 위조.
그래서에 따르면 내가 무엇을 그냥 지적했다 올바른 방법으로 구현이 될 수 있다:
<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>
마지막으로 참고가 삽입된 laravel 의 준비 상자 기능{{csrf_field()}}
!
을위한 최선의 방법 Laravel5.8
100%일
추가 이 기능 안Auth\LoginController.php
use Illuminate\Http\Request;
또한 추가 이
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->invalidate();
return $this->loggedOut($request) ?: redirect('/login');
}
나는 당신을 추천으로 스틱 Laravel 인증 경로에 web.php:Auth::로()
그것이 만들은 다음과 같은 경로:
POST | logout | App\Http\Controllers\Auth\LoginController@logout
당신은 로그아웃을 사용하여 게시물 양식입니다. 이 방법은 당신이 또한 필요 CSRF 토큰을 권장합니다.
<form method="POST" action="{{ route('logout') }}">
@csrf
<button type="submit">Logout</button>
</form>