函数名称必须是laravel身份验证登录中的字符串

时间:2019-01-26 11:18:30

标签: php laravel authentication

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

  

FatalThrowableError(E_ERROR)

     

函数名称必须是字符串

Admin Controlller:

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

AdminLogin Controlller:

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');}); 

2 个答案:

答案 0 :(得分:0)

预期功能仅接受字符串。不适用于route(//);

替换:

return redirect()->intended();

收件人:

return redirect()->intended(//url string here);

答案 1 :(得分:0)

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

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

    return $next($request);
  }

删除评论后,效果就像魔术一样。