Laravel 5.1 - 验证用户名、密码,如果确认 = 1
Laravel 5.1 - Authenticate Username, Password AND if confirmed = 1
为了看似简单的任务而大费周章。我使用以下代码在我的 AuthController
中使用 username
而不是 email
:
/**
* Set the login system to use username instead of email address
* @var string
*/
protected $username = 'username';
这在很长一段时间内都运行良好(当我不打算让用户激活他们的帐户时)。但是,现在我需要用户激活他们的帐户,我知道我需要对登录进行额外的检查才能看到他们的仪表板。
我已将下面的 postLogin()
方法修改为我认为正确的方法:
public function postLogin(Request $request)
{
$this->validate($request, [
'username' => 'required', 'password' => 'required',
]);
$credentials = $request->only('username', 'password');
$credentials = array_add($credentials, 'confirmed', '1');
if ($this->auth->attempt($credentials, $request->has('remember')))
{
return redirect()->intended($this->redirectPath());
}
return redirect($this->loginPath())
->withInput($request->only('username', 'remember'))
->withErrors([
'username' => $this->getFailedLoginMessage(),
]);
}
但我得到的只是以下错误:
Undefined property: App\Http\Controllers\Auth\AuthController::$auth
我做错了什么?
安迪
我在那里看到的只是一个故障。
if ($this->auth->attempt($credentials, $request->has('remember')))
应该是
if (Auth::attempt($credentials, $request->has('remember')))
在 Laravel 5.1 中,AuthController class 构造函数中不存在 $auth 属性,如 5.1 upgrade guide 中所述。因此,您引用的 属性 不存在。
为了看似简单的任务而大费周章。我使用以下代码在我的 AuthController
中使用 username
而不是 email
:
/**
* Set the login system to use username instead of email address
* @var string
*/
protected $username = 'username';
这在很长一段时间内都运行良好(当我不打算让用户激活他们的帐户时)。但是,现在我需要用户激活他们的帐户,我知道我需要对登录进行额外的检查才能看到他们的仪表板。
我已将下面的 postLogin()
方法修改为我认为正确的方法:
public function postLogin(Request $request)
{
$this->validate($request, [
'username' => 'required', 'password' => 'required',
]);
$credentials = $request->only('username', 'password');
$credentials = array_add($credentials, 'confirmed', '1');
if ($this->auth->attempt($credentials, $request->has('remember')))
{
return redirect()->intended($this->redirectPath());
}
return redirect($this->loginPath())
->withInput($request->only('username', 'remember'))
->withErrors([
'username' => $this->getFailedLoginMessage(),
]);
}
但我得到的只是以下错误:
Undefined property: App\Http\Controllers\Auth\AuthController::$auth
我做错了什么?
安迪
我在那里看到的只是一个故障。
if ($this->auth->attempt($credentials, $request->has('remember')))
应该是
if (Auth::attempt($credentials, $request->has('remember')))
在 Laravel 5.1 中,AuthController class 构造函数中不存在 $auth 属性,如 5.1 upgrade guide 中所述。因此,您引用的 属性 不存在。