首页 > 解决方案 > Laravel 错误:找不到用于多重身份验证的类 'App\Http\Controllers\Auth\Auth'

问题描述

我想在我的 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

它针对的是我用箭头指向的那条线。

请问错误的原因可能是什么,我该如何纠正它。

标签: phplaravelauthentication

解决方案


在 PHP 中引用类名时,它们都充当relative,这意味着类名将附加到当前命名空间的任何位置。

如果您不在命名空间中,并且您正在查找 class Auth,PHP 将尝试查找Auth. 如果您在命名空间中App并查找类Auth,PHP 将尝试查找App\AuthAuth在命名空间中定义的类App

因为您的控制器在命名空间内App\Http\Controllers\Auth,所以它在该类的同一个命名空间内查找Auth

为了通过绝对查找查找不同的命名空间,您可以在类前面加上反斜杠(从根开始),或添加导入语句。\use

按照Laravel 文档中的示例,为适当的外观添加一条use语句应该可以解决您的错误:

use Illuminate\Support\Facades\Auth;

这可以与use您的类中的其他导入语句一起放置。快乐编码!


推荐阅读