Php Laravel 5.1自定义表名和字段名
我正在使用一个已经设置好的数据库将一个旧的应用程序升级到Laravel 5.1,并使用现成的身份验证系统(内置)。只有当我使用电子邮件和密码作为字段名时,注册/登录才有效,否则它允许用户注册,但不允许他们登录。我的问题是我们可以使用自己的文件名吗?我认为您需要更改Php Laravel 5.1自定义表名和字段名,php,mysql,laravel,Php,Mysql,Laravel,我正在使用一个已经设置好的数据库将一个旧的应用程序升级到Laravel 5.1,并使用现成的身份验证系统(内置)。只有当我使用电子邮件和密码作为字段名时,注册/登录才有效,否则它允许用户注册,但不允许他们登录。我的问题是我们可以使用自己的文件名吗?我认为您需要更改迁移和用户模型的$filleble属性AuthController和Illumb\Foundation\Auth\AuthenticatesUserspostLogin和loginUsername方法您应该将用户名属性设置为AuthCo
迁移
和用户
模型的$filleble
属性AuthController
和Illumb\Foundation\Auth\AuthenticatesUsers
postLogin
和loginUsername
方法您应该将用户名
属性设置为AuthController
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $username = 'field_name';
...
}
检查照明\Foundation\Auth\AuthenticatesUsers@loginUsername
方法
编辑
如果要更改密码
字段名(或使用laravel auth中的另一个字段),应覆盖postLogin
方法,因为它是硬编码的
public function postLogin(Request $request)
{
$this->validate($request, [
'co_Email' => 'required', 'co_Password' => 'required'
]);
$throttles = $this->isUsingThrottlesLoginsTrait();
if ($throttles && $this->hasTooManyLoginAttempts($request)) {
return $this->sendLockoutResponse($request);
}
$credentials = $request->only('co_Email', 'co_Password');
if (Auth::attempt($credentials, $request->has('remember'))) {
return $this->handleUserWasAuthenticated($request, $throttles);
}
if ($throttles) {
$this->incrementLoginAttempts($request);
}
return redirect($this->loginPath())
->withInput($request->only('co_Email', 'remember'))
->withErrors([
'co_Email' => $this->getFailedLoginMessage(),
]);
}
拉威尔让这一切变得非常简单。正如@pespantelis所说,您可以覆盖email字段。以您的形式:
<input type="email" name="co_Email">
为了让Laravel在仍然使用默认身份验证系统的情况下查看正确的密码列,这有点不同,但仍然很简单。只需遵循以下步骤:
<input type="password" name="password">
然后,Laravel将“密码”字段与“co_密码”列进行比较。感谢shafi,不仅是在迁移、用户模型的可填充中,而且在AuthController中。但是仍然不起作用。请告诉我您正在尝试的一些更改。我将尝试执行相同的操作,看看您是否需要更改
illumb\Foundation\Auth\AuthenticatesUsers
。。。现在我建议做点别的。。不要试图弄乱代码。。。但是,仍然要更新您的问题并解释您正在尝试做的更改。在db中,我有co_密码、co_名称、co_电子邮件字段。我想在laravel auth中使用。我无法更改字段名,因为其他应用程序也在使用这些字段名。好吧,如果我们在下一次artisan更新时更新AuthenticateUsers这样的特征,这些特征将被覆盖?那么我相信@thomas kim已经提出了一个很好的解决方案。对AuthController
和User
模型的更改是可以接受的。谢谢,我刚刚更新了illumb\Foundation\Auth\AuthenticatesUsers文件,用代码更改postLogin函数,与您的代码唯一不同的是,我们不需要按需输入co_名称字段。另外,我还更新了同一文件中的getCredentials函数getCredentials受保护函数(Request$Request){return$Request->only($this->loginUsername(),'co_Password');}
现在登录时,会显示一条错误消息,这些凭据与我们的记录不匹配。哦,对不起,你把我弄糊涂了。如果没有co_Name
字段,它的工作方式就像charm.co_Name字段在Reg中。这是正常工作的。现在,我更新了AuthenticatesUsers、User model、Login view和AuthController.php文件中的代码,该文件位于app/Http/Controllers/Auth中,但仍然存在相同的错误消息
<input type="password" name="password">
public function getAuthPassword()
{
return $this->co_Password;
}