laravel - 具有不同用户表的 Laravel 多重身份验证
问题描述
我正在尝试在 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
解决方案
错误来自控制器方法array $data
中的参数。createAdmin()
通常,您希望在控制器方法中使用两种类型的参数之一:路由参数或注入依赖项。该$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();
// ...
}
推荐阅读
- plotly - 绘制 groupby 变换
- math - 计算机如何计算负(-)和正(+)无穷大?
- java - 如何在java中从double转换为大于long的值
- angular - 错误 TS1127:在 Angular 7 中运行 Karma 测试时出现无效字符
- keras - 使用 ImageGenerator 时可以禁用图像大小调整吗?
- matlab - 定点迭代法错误MATLAB
- python - 根据 python pandas 数据框中其他列的值计算新列
- pyqt5 - 如何在pyqt5中区分背景和前景
- spring-boot - 我如何在春季启动中为百里香设置前缀路径
- flutter - 我在 YAML 文件中提到了插件,但在 Xcode 中仍然遇到问题