第一次,我问什么在这里之前,而不是最有经验,所以请漂亮的!
我在我的DB中设置了两个表 - 用户和代理商。
我曾尝试多种方式,以登录两个用户,并会非常喜欢他们能够从同一个表单进行登录并做了检查两个卫兵,看是否证书是有效的,但由于某种原因做这样的尝试时,警卫只会为我的默认在我auth.php文件设置为工作表中。
逆天我试图:
Auth::guard('web')->attempt($credentials)
Auth::guard('agent')->attempt($credentials)
如果我把我的默认后卫在我auth.php
文件到网络守卫其工作正常,并记录在从用户表的匹配凭据,但尝试代理人资格证书是表明在我的网络选项卡时:
登录 -
POST 302发现
代理 -
GET 302发现
登录 -
获得200 OK
因此,它几乎就像它承认将凭据是否正确,并重新定向但随后犯规上使用选定的警卫携带?
在config/auth.php
复制下面的代码:
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'agent' => [
'driver' => 'session',
'provider' => 'agents',
]
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'agents' => [
'driver' => 'eloquent',
'model' => App\Agent::class,
]
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'agents' => [
'provider' => 'agents',
'table' => 'password_resets',
'expire' => 60,
],
],
];
在您登录控制器:
public function login(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
if (Auth::guard('agent')->attempt(['email' => $request->email, 'password' => $request->password])) {
return redirect('/dashboard/agent');
}
if(Auth::guard('web')->attempt(['email' => $request->email, 'password' => $request->password])){
return redirect('/dashboard/user');
}
return redirect()->back()->withInput($request->input());
}