【问题标题】:auth logout doesn't work laravel身份验证注销不起作用 laravel
【发布时间】:2017-08-29 21:08:15
【问题描述】:

我使用命令制作了用于身份验证的文件

php artisan make:auth

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

我还阅读了一些关于在应用程序中修改 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'
    ));
    

我得到的错误是

  MethodNotAllowedHttpException in RouteCollection.php line 233:

这与我尝试使用 auth 中定义的默认注销时遇到的错误相同

【问题讨论】:

  • 返回重定向(路由('pages.logout'));也许吧。
  • 谢谢你,它成功了,我添加了 return redirect(route('home') );并将第一个根(带有“/”)命名为“home”。现在它访问刀片文件,并重定向到主页,但它没有退出

标签: laravel authentication routes blade middleware


【解决方案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 路由时(转到页面时的默认设置),它应该可以工作。

【讨论】:

  • 成功了,非常感谢!!稍微说明一下,我写的是“LogoutController@logout”,其实是“LoginController@logout”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 2020-08-05
  • 2012-09-06
  • 2016-10-21
  • 2014-07-19
相关资源
最近更新 更多