【问题标题】:Laravel multi authetification with different users tablesLaravel 具有不同用户表的多重身份验证
【发布时间】:2020-02-09 05:04:28
【问题描述】:

我正在尝试在 laravel 中为管理员和用户使用不同的表(2 个表)构建多重身份验证。问题是注册和登录表单仅适用于默认身份验证登录/注册。

我尝试了一些网络教程中的示例,但没有成功。

HomeController.php:

public function __construct() {
    $this->middleware('auth');
}

public function index() {
    return view('home');
}

我在“Auth/RegisterController.php”中添加了createAdmin函数:

protected function createAdmin(array $data)
{
    $this->validator($data->all())->validate();
    $admin = Admin::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
    return redirect()->intended('login/admin');
}

我已将电子邮件验证规则更改为:

'email' => ['required', 'string', 'email', 'max:255', 'unique:users'|'unique:admins']

而路由(web.php)是:

Route::post('/register/admin', 'Auth\RegisterController@createAdmin');

当我填写管理员注册凭据并单击注册按钮时,我会收到以下消息:

Symfony\Component\Debug\Exception\FatalThrowableError 函数 App\Http\Controllers\Auth\RegisterController::createAdmin() 的参数太少,通过了 0,预期正好 1

【问题讨论】:

    标签: laravel


    【解决方案1】:

    错误来自createAdmin() 控制器方法中的array $data 参数。

    通常,您希望在控制器方法中使用两种类型的参数之一:route parametersinjected dependencies$data 参数与其中任何一个都不匹配,因此 Laravel 不知道提供它。

    如果您想访问控制器中的请求 (POST) 数据,您可以请求 Illuminate\Http\Request 的实例作为参数:

    // Import it at the top of your PHP file
    use Illuminate\Http\Request;
    
    // Then your updated method:
    public function createAdmin(Request $request)
    {
        $data = $request->all();
    
        // ...
    }
    

    或者,直接使用request() 助手:

    public function createAdmin()
    {
        $data = request()->all();
    
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-08
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2018-10-17
      • 2020-01-16
      • 2013-09-11
      • 1970-01-01
      相关资源
      最近更新 更多