Laravel注销功能在自定义身份验证中不起作用

时间:2020-04-22 05:02:37

标签: php laravel laravel-authentication

在我的Laravel项目中,我正在使用多重身份验证。但是从我新创建的用户agency开始,注销功能不起作用

以下是我的代码以供注销

 <li>
                                 <a href="{{ url('/agency/logout') }}"
                                    onclick="event.preventDefault();
                                    document.getElementById('logout-form').submit();">
                                 Logout
                                 </a>
                                 <form id="logout-form" action="{{ url('/agency/logout') }}" method="POST" style="display: none;">
                                    {{ csrf_field() }}
                                 </form>
                              </li>

以下是路线(web.php)中的代码

Route::group(['prefix' => 'agency'], function () {
    Route::get('/', 'Agency\AgencyAuth\LoginController@showLoginForm')->name('agency_login');
    Route::get('/login', 'Agency\AgencyAuth\LoginController@showLoginForm')->name('login');
    Route::post('/login', 'Agency\AgencyAuth\LoginController@login');
    Route::post('/logout', 'Agency\AgencyAuth\LoginController@logout')->name('logout');

   // Route::get('/agencie_home', 'Agency\HomeController@index')->name('agencie_home');
});

以下是LoginController.php中的代码

<?php

namespace App\Http\Controllers\Agency\AgencyAuth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
use Hesto\MultiAuth\Traits\LogsoutGuard;
use JsValidator;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers, LogsoutGuard {
        LogsoutGuard::logout insteadof AuthenticatesUsers;
    }

    protected $validationRules = [
                                        'email' => 'required|email',
                                        'password' => 'required'
                                    ];

    /**
     * Where to redirect users after login / registration.
     *
     * @var string
     */
    public $redirectTo = '/agency/dashboard';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('agencie.guest', ['except' => 'logout']);
    }

    /**
     * Show the application's login form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showLoginForm()
    {
        $validator = JsValidator::make($this->validationRules,[],[],'#loginform');
        return view('agency.auth.login')->with('validator', $validator);
    }

    /**
     * Get the guard to be used during authentication.
     *
     * @return \Illuminate\Contracts\Auth\StatefulGuard
     */
    protected function guard()
    {
        return Auth::guard('agencie');
    }

    public function logout(Request $request) {
        Auth::logout();
       return '/agency';
    }
}

当我尝试注销时,它返回以下错误

Class App\Http\Controllers\Agency\AgencyAuth\Request does not exist

如何实现注销功能?

1 个答案:

答案 0 :(得分:0)

您没有使用所需的名称空间,请尝试在LoginController中使用以下内容:

int

由于脚本试图从当前名称空间加载Request类而导致错误:

getMediaDuration(path): Promise<any> {
    return new Promise((resolve, reject) => {
      let audio: MediaObject = this.media.create(path);
      audio.seekTo(1);
      audio.onStatusUpdate.subscribe(status => {
        setTimeout(()=>{
          resolve(audio.getDuration());
          audio.release();
        }, 500);

      }); 
    });
  }