在Laravel登录期间如何检查其他字段?
现在,它可以在包装盒中工作,并接受电子邮件和密码。用户登录时如何另外查看状态参数?
我使用这个LoginController
:
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
}
我在LoginController中尝试过此操作
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
$credentials['status'] = 1;
if (Auth::attempt($credentials)) {
return redirect()->intended('home');
}
}
但是Laravel忽略了此方法authenticate().
如果要删除use AuthenticatesUsers;
,它会生效,但随后无法退出登录页面。
答案 0 :(得分:2)
在您的LoginController中,在以下函数中添加一个额外的字段
protected function credentials(Request $request)
{
return array_merge($request->only($this->username(), 'password'), ['column-name' => 'value']);
}
答案 1 :(得分:1)
您可以添加其他字段,以通过d
功能
在您内部credentials
添加LoginController
函数,并在附加字段中附加电子邮件,密码
示例:
credentials
答案 2 :(得分:1)
您的问题标签为 laravel 5.2 ,那么对于5.2,您应该覆盖getCredentials函数:
protected function getCredentials(Request $request)
{
$credentials = $request->only($this->loginUsername(), 'password');
$credentials['status'] = 1;
return $credentials;
}
如果您使用的是 laravel 5.3 + ,则Emtiaz Zahid的答案是正确的(覆盖credentials函数)
答案 3 :(得分:1)
在您的LoginController.php
Illuminate\Http\Request;
protected function credentials(Request $request)
{
return array_merge($request->only($this->username(), 'password'), ['verified' => 1]);
}
答案 4 :(得分:1)
请在您的LoginController中添加以下代码。.
public function credentials(Request $request)
{
return array_merge($request->only($this->username(), 'password'), ['type' => 'USER']);
}