簡體   English   中英

Laravel 錯誤:Class 'App\Http\Controllers\Auth\Auth' 找不到多重身份驗證

[英]Laravel error: Class 'App\Http\Controllers\Auth\Auth' not found for multi authentication

我想在我的 LoginController 中使用多重身份驗證,我有以下代碼(為簡潔起見)

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class LoginController extends Controller{

use AuthenticatesUsers;

public function __construct()
{
    $this->middleware('guest')->except('logout');
    $this->middleware('guest:admin')->except('logout');
}

public function showAdminLoginForm()
{
    return view('auth.login', ['url' => 'admin']);
}

public function adminLogin(Request $request){
    $this->validate($request, [
        'email'   => 'required|email',
        'password' => 'required|min:6'
    ]);

  -->  if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->get('remember'))) {
 
        return redirect()->intended('/admin');
    }
    return back()->withInput($request->only('email', 'remember'));
}
}

當我登錄時,它會產生錯誤。

Class 'App\Http\Controllers\Auth\Auth' not found

它針對的是我用箭頭指向的那條線。

請問錯誤的原因可能是什么,我該如何糾正它。

在 PHP 中引用 class 名稱時,它們都充當relative ,這意味着 class 名稱將附加到當前命名空間的任何內容。

如果您不在命名空間中,並且您查找 class Auth , PHP 將嘗試查找完全限定的 class 名稱(命名空間 + 類)的Auth 如果您在命名空間App中並查找 class Auth , PHP 將嘗試查找App\AuthApp命名空間中定義的Auth class 。

因為您的 controller 位於命名空間App\Http\Controllers\Auth內,所以它正在同一命名空間內查找 class Auth

為了查找不同的命名空間,通過絕對查找,您可以在 class 前面加上一個\反斜杠(從根開始),或者添加一個use import 語句。

按照Laravel 文檔中的示例,為適當的外觀添加use語句應該可以解決您的錯誤:

use Illuminate\Support\Facades\Auth;

這可以與 class 中的其他use導入語句一起放置。 快樂編碼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM