gpt4 book ai didi

database-design - Laravel 7 多重身份验证与 3 个不同的表

转载 作者:行者123 更新时间:2023-12-04 12:59:02 27 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

去年关闭。




Improve this question




我是 Laravel 7 的新手,我正在创建一个需要 3 个不同用户表(管理员、销售人员、仓库经理)的应用程序
每个用户都可以从单独的登录表单登录,并拥有不同的仪表板。
我想为每个用户实现身份验证,登录到他们指定的仪表板,用户有不同的列,这就是为什么我希望将它们保存在单独的表中,而不是一个带有角色列的表。

最佳答案

您应该在 中添加三个表配置/auth.php 在守卫和提供者中使 auth() 函数识别每个表:注意将其替换为您的模型名称

    'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
'salesperson' => [
'driver' => 'session',
'provider' => 'salesperson',
],
'manager' => [
'driver' => 'session',
'provider' => 'manager',
],
],

'providers' => [
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'salesperson' => [
'driver' => 'eloquent',
'model' => App\Salesperson::class,
],

'manager' => [
'driver' => 'eloquent',
'model' => App\Manager::class,
],
],

之后你应该为每个人创建一个中间件来控制登录,所以你应该在中间件中添加它 $routemiddleware 功能,在 内核.php :
'admin' => \App\Http\Middleware\AuthenticateAdmin::class,
'salesperson' => \App\Http\Middleware\AuthenticateSalesperson::class,
'manager' => \App\Http\Middleware\AuthenticateManager::class,

为每个人创建一个 Controller :
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Hash;
use App\Admin;


class LoginController extends Controller
{
use AuthenticatesUsers;

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

public function login(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required',
]);
if (auth()->guard('admin')->attempt(['email' => $request->input('email'), 'password' => $request->input('password')])) {
return redirect('*your route*');
} else {
dd('your username and password are wrong.');
}
}

public function getLogin()
{
return view('*the login form*');
}
}

并在您的 admin.php
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class Relative extends Authenticatable
{
use Notifiable;

protected $guarded = [];

protected $hidden = [
'password'
];

public function getAuthPassword()
{
return $this->password;
}

}

为每一个重复最后两个步骤。如果您需要更多信息: https://laracasts.com/discuss/channels/laravel/multi-auth-login-with-single-table-user-using-middleware-in-laravel

关于database-design - Laravel 7 多重身份验证与 3 个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61701030/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com