首页 > 解决方案 > laravel 认证登录中函数名必须是字符串

问题描述

在 laravel admin 上进行身份验证操作时出现问题。

FatalThrowableError (E_ERROR)

函数名必须是字符串

管理员控制器:

class AdminController extends Controller
{
public function __construct()
{
    $this->middleware('auth:admin');
}
public function index(){
    return view('comparadm.dashboard'); 
}}

管理员登录控制器:

class AdminLoginController extends Controller
{
public function __construct()
{
    $this->middleware('guest:admin');
}
public function showLoginForm()
{
    return view('auth.admin-login');
}
public function login(Request $request){
  $this->validate($request,[
      'email'=>'required|email',
      'password'=>'required|min:6'

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

路线:

Auth::routes();
Route::prefix('admin')->group(function() {
Route::get('/login', 'Auth\AdminLoginController@showLoginForm')->name('admin.login');
Route::post('/login', 'Auth\AdminLoginController@login')->name('admin.login.submit');
Route::get('/', 'AdminController@index')->name('admin.dashboard');}); 

标签: phplaravelauthentication

解决方案


答案可能与这个特定问题无关,但至少可以为某人指明正确的方向。我遇到了同样的问题,但后来我发现我搞砸了位于“App\Http\Middleware\RedirectIfAuthenticated.php”中的 RedirectIfAuthenticated.php。问题是我评论了如下所示的句柄函数

 public function handle($request, Closure $next, $guard = null) {
    if (Auth::guard($guard)->check()) {
        return redirect('/home');
    }

    return $next($request);
  }

在我删除评论后,它就像魔术一样工作。


推荐阅读