laravel - 尝试通过默认 laravel Auth 注册多个用户
问题描述
我有 3 个用户
顾客餐厅骑士
我正在尝试通过默认路线注册骑手,以便我可以再次登录:
<form method="POST" action="{{ route('register') }}">
@csrf
<h4 class="text-light-black fw-600">Create your account</h4>
<input type="text" name="type" value="rider">
<div class="row">
<div class="col-lg-6 col-md-12 col-sm-6">
<div class="form-group">
<label class="text-light-white fs-14">First name</label>
<input type="text" name="first_name" class="form-control form-control-submit"
placeholder="First Name" required>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-6">
<div class="form-group">
<label class="text-light-white fs-14">Last name</label>
<input type="text" name="last_name" class="form-control form-control-submit" placeholder="Last Name"
required>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-6">
<div class="form-group">
<label class="text-light-white fs-14">Username</label>
<input type="text" name="username" class="form-control form-control-submit" placeholder="Username"
required>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-6">
<div class="form-group">
<label class="text-light-white fs-14">CNIC</label>
<input type="text" name="cnic" class="form-control form-control-submit" placeholder="CNIC" required>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-6">
<div class="form-group">
<label class="text-light-white fs-14">Ride Number</label>
<input type="text" name="ride_number" class="form-control form-control-submit"
placeholder="Ride Number" required>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-6">
<div class="form-group">
<label class="text-light-white fs-14">Ride Chassis</label>
<input type="text" name="chassis_number" class="form-control form-control-submit"
placeholder="Ride Chassis" required>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-6">
<div class="form-group">
<label class="text-light-white fs-14">Password</label>
<input type="password" name="password" class="form-control form-control-submit"
placeholder="Password" required>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-6">
<div class="form-group">
<label class="text-light-white fs-14">Confirm Password</label>
<input type="password" name="password_confirmation" class="form-control form-control-submit"
placeholder="Confirm Password" required>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label class="text-light-white fs-14">Email</label>
<input type="email" name="email" class="form-control form-control-submit" placeholder="Email I'd" required>
</div>
<div class="form-group">
<label class="text-light-white fs-14">Address</label>
<input type="text" name="address" class="form-control form-control-submit" placeholder="Address" required>
</div>
<div class="form-group">
<button type="submit" class="btn-second btn-submit full-width">Create your account</button>
</div>
<div class="form-group text-center"></div>
<span class="text-light-black fs-12 terms">By creating your Munchbox account, you agree to the <a
href="#"> Terms of Use </a> and <a href="#"> Privacy Policy.</a></span>
</div>
</div>
</form>
这是我的创建方法
受保护的函数创建(数组$data){dd($data);
if ($data['type']=='rider')
{
$user= Rider::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'password' => Hash::make($data['password']),
'address' => $data['address'],
]);
}else
{
$user = User::create([
'name' => $data['name'],
'password' => Hash::make($data['password']),
'email' => $data['email'],
]);
}
return $user;
}
我想做的是当一个新骑手想要自己注册时,他可以,所以他也可以使用默认的登录 laravel 路线和方法
但我未能在同一页面上刷新页面,并且骑手没有在骑手表中注册。
解决方案
Básicamente necesitas crear un guard por cada modelo de usuario, aqui un lindo tutorial donde explica como hacer esto: https://pusher.com/tutorials/multiple-authentication-guards-laravel
例子:
// 应用程序/Rider.php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Rider extends Authenticatable
{
use Notifiable;
protected $guard = 'rider';
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
}
// 应用程序/Restaurant.php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Restaurant extends Authenticatable
{
use Notifiable;
protected $guard = 'restaurant';
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
}
你必须宣布你的警卫
// 配置/auth.php
<?php
[...]
'guards' => [
[...]
'rider' => [
'driver' => 'session',
'provider' => 'riders',
],
'restaurant' => [
'driver' => 'session',
'provider' => 'restaurants',
],
],
[...]
并声明您的提供者
// config/auth.php
[...]
'providers' => [
[...]
'restaurants' => [
'driver' => 'eloquent',
'model' => App\Restaurant::class,
],
'riders' => [
'driver' => 'eloquent',
'model' => App\Rider::class,
],
],
[...]
推荐阅读
- c - 如何防止用户必须在终端中按两次输入才能获得输出
- javascript - 在 Javascript 中制作千 (k) 转换器函数而不进行舍入,而不是从末尾删除 .0
- python - 根据熊猫中的某些条件拆分以逗号分隔的列
- ios - AKEqualizerFilter 没有效果
- python - 如何在 Tkinter 中添加多个条目
- visual-studio - 加载项目时启动时出现 Visual Studio IDE 错误
- mysql - Apache Solr 与 MySQL 的集成
- c - C 中的分隔符
- python - 从没有子元素的内部元素中获取文本
- android - 无法连接到在 Windows 10 中创建的旧版 SoftAp