auth logout不起作用laravel

时间:2017-04-04 15:09:50

标签: laravel authentication routes blade middleware

我使用命令

制作了用于身份验证的文件
php artisan make:auth

我在互联网上看到注册,登录以及注销都应该正常工作,但localhost:8080 / logout不起作用,我不知道为什么。

我还阅读了有关在app中修改AuthController的内容,但我没有该文件。

我尝试手动完成,这意味着我创建了一个中间件LogoutRedirect:

 public function handle($request, Closure $next)
{
    return redirect(pages.logout);
}

在我添加的路线中

use App\Http\Middleware\LogoutRedirect;

Route::get('logout', function()
{
    return view('pages.logout');
})->middleware(LogoutRedirect::class);

logout.blade.php看起来像

{{ Auth::logout() }}

我收到错误(尝试访问localhost:8080 / logout时)

Use of undefined constant pages - assumed 'pages'

我该怎么办?

修改

我尝试了另一种方法(但没有更好的结果):

  1. 将重定向到'/'的路线重命名为'home'
  2. 在app / http / Controllers / Auth

    中创建了一个LogoutController

    namespace App\Http\Controllers;
    use [...]
    class LogoutController extends Controller
    {
        public function logout() {
            Auth::logout();
            return Redirect::route('home');
    }
    }
    
  3. 制作路线

    Route::post('logout', array(
        'as' => 'account-sign-out',
        'uses' => 'Auth\LogoutController@logout'
    ));
    
  4. 我得到的错误是

      MethodNotAllowedHttpException in RouteCollection.php line 233:
    

    当我尝试使用auth

    中定义的默认注销时,我得到了同样的错误

1 个答案:

答案 0 :(得分:1)

您正尝试使用GET访问注销页面。但这不起作用,因为您的注销路线是一个后期路线。 改变

Route::post('logout', array(
    'as' => 'account-sign-out',
    'uses' => 'Auth\LogoutController@logout'
));

通过

Route::get('logout', [
    'as' => 'account-sign-out',
    'uses' => 'Auth\LogoutController@logout'
]);

当您使用方法GET(转到页面时的默认设置)转到/ logout路径时,它应该可以正常工作。