我正在尝试使用Laravel的内置Authentication类。在阅读它之后,它似乎只根据config/auth.php
文件查看一个表。根据文档,我可以使用这样的语法:
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
// The user is active, not suspended, and exists.
}
我担心的是,email
列位于我的用户表中,而password
位于 auth 表中。正如我上面所说,我对Laravel认证的理解是它只查找一个表。我错过了什么吗?
答案 0 :(得分:4)
实际上解决方案非常简单。您只需要覆盖Authenticatable
特征中定义的getAuthPassword
方法,方法是将其添加到User
模型中:
public function getAuthPassword()
{
return \DB::table('auth')->where('user_id', $this->id)->pluck('password');
}
就是这样,现在验证系统会在检查它是否与用户输入匹配之前从auth
表中获取密码。
答案 1 :(得分:0)
您可以手动验证用户身份。
user
表中检索用户,密码来自
auth
表(通过简单的连接或雄辩的关系)。\Hash::check($password, $hashedPassword);
验证密码是否正确。Auth::login($user);
手动登录用户;如果是简单的数据库查询,则使用Auth::loginUsingId($id);
。文件: