当前位置: 首页 > 知识库问答 >
问题:

参数太少,无法执行App\Http\Controller\Auth\LoginController::a验证()

晏永康
2023-03-14

我想在login()返回类型中使用authenticated()。我想尝试,当用户试图通过他们的phn_号码登录时,他们可以登录,并且还可以检查中间件/用户_角色。我在Authenticated()上编写的这部分代码。所以我的计划是当我登录时,login()也将通过authenticated()返回。

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\SiteSettings;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Auth;
use User;

class LoginController extends Controller
{


    use AuthenticatesUsers;

    protected function authenticated (Request $request, $user)
    {
        if (Auth::check() && Auth::user()->role->id == 1 ) {
            $this->redirectTo = route('admin.dashboard');

        } elseif(Auth::check() && Auth::user()->role->id == 2 ) {
            $this->redirectTo = route('doctor.dashboard');

        } elseif(Auth::check() && Auth::user()->role->id == 3 ) {
            $this->redirectTo = route('nurse.dashboard');

        } else {
            $this->redirectTo = route('search.doctor');
        }
    }

   // protected $redirectTo = $this->authenticated();

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


    public function field()
    {
        if (filter_var(request()->phn_number,FILTER_VALIDATE_EMAIL)){
            return 'email';
        }else{
            return 'phn_number';
        }
    }
    public function login()
    {
        // Check Right Position
      //  return $this->field();
        if (Auth::attempt([$this->field()=>request()->phn_number, 'password'=>request()->password ])){
           // Wanna Return Authenticated function
            //return redirect()->intended('/');
            return redirect()->intended($this->authenticated());
        }else{
            return redirect()->back()->withInput('phn_number');
        }
    }

}

因此,它返回给函数App\Http\Controllers\Auth\LoginController::authenticated()的参数太少<我也尝试使用

  return $this->authenticated(); 

它也给我错误。

共有1个答案

郜杰
2023-03-14

重写illighted\Foundation\Auth\AuthenticatesUsers类上的方法的authenticates()方法有两个必须传递给的参数,因此将login()方法更改为此参数:

public function login(Request $request)
{
    // Check Right Position
    //  return $this->field();
    if (Auth::attempt([$this->field() => $request->phn_number, 'password' => $request->password])) {
        // Wanna Return Authenticated function
        //return redirect()->intended('/');
        return redirect()->intended(authenticated($request, $this->guard()->user()));
    } else {
        return redirect()->back()->withInput('phn_number');
    }
}

正如您所看到的,我们正在调用验证($请求,$this-

您还可以重写您的authenticated方法并使用$user,也无需使用Auth::chcek(),因为用户在到达此方法时已通过身份验证:

protected function authenticated (Request $request, $user)
{
    if ($user->role->id == 1) {
        $this->redirectTo = route('admin.dashboard');
    } else if($user->role->id == 2) {
        $this->redirectTo = route('doctor.dashboard');
    } else if($user->role->id == 3) {
        $this->redirectTo = route('nurse.dashboard');
    } else {
        $this->redirectTo = route('search.doctor');
    }
}

 类似资料:
  • 当我将数据发送到MySQL数据库时,我在上遇到了这个错误 此错误: 函数App\Http\Controllers\Auth\LoginController::authenticated()的参数太少,在C:\xampp\htdocs\codecrowne\vendor\laravel\framework\src\light\Foundation\Auth\AuthenticatesUsers.ph

  • 帮助我理解并解决这些错误。 错误: Symfony\Component\Debug\Exception\FatalThrowableError(E\u RECOVERABLE\u ERROR)类型错误:传递给App\Http\Controllers\Auth\LoginController::authenticated()的参数1必须是App\Http\Controllers\Auth\Reque

  • 我是PHP和Laravel的初学者。我在我的项目Laravel 7中使用。我有存储库模式在我的项目与缓存。 PageServiceProvider: CachingBaseRepository: BaseRepository: PageRepository: 恶作剧记录片 PageRepositoryInterface: 我想在上面的代码中为我的网站添加缓存。我的控制器如下所示: 当我运行上述代码

  • 我得到以下错误: 致命错误:Uncaught ArgumentCounter错误:函数wpdb::prepare()的参数太少,1传入/homepages/39/d740877019/htdocs/test/wp content/themes/eduma/formulaire_get。php位于第108行,在/homepages/39/d740877019/htdocs/test/wp inclu

  • 我正在尝试发送验证电子邮件,这是给我的错误代码 它给了我以下错误: 传递给App\Http\Controllers\Auth\RegisterController::registed()的参数1必须是App\Http\Controllers\Auth\Request的实例,给定的照亮\Http\Request的实例,在/home/bassel/book\u generation/vendor/la

  • 我正在尝试为用户设置策略。然而,我不断得到一个错误: 太少的参数功能应用\政策\用户政策::更新(),1传递 /vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php在第481行,正好2预期(视图: /resources/views/users/index.blade.php) 错误异常 /app/Policies/UserPoli