我正在完成我的工作,但我的客戶需要更多管理用戶的功能,例如暫停帳戶或凍結帳戶,我非常確定可以很容易地做到這一點:https://laravel.com/docs/5.4/authentication#authenticating-users,但我已經使用默認php artisan make:auth
身份驗證。我的問題是,可以在用戶登錄時添加更多支票,如if active == true
或類似的東西?謝謝!如何使用Laravel在現有默認身份驗證上創建自定義身份驗證
回答
在laravel 5.4,您可以使用AuthenticatesUsers
authenticated
登錄後鉤做你的自定義驗證。
protected function authenticated(Request $request, $user) {
if($user->active){
return redirect()->intended($this->redirectPath());
}
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect()->back()
->withInput($request->except('password'))
->withError('Please activate your account.')
}
您可以按自己的騎現有的登錄功能是這樣的:
public function postLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email', 'password' => 'required',
]);
$credentials = $this->getCredentials($request);
// This section is the only change
if (Auth::validate($credentials)) {
$user = Auth::getLastAttempted();
if ($user->active) {
Auth::login($user, $request->has('remember'));
return redirect()->intended($this->redirectPath());
} else {
return redirect($this->loginPath()) // Change this to redirect elsewhere
->withInput($request->only('email', 'remember'))
->withErrors([
'active' => 'You must be active to login.'
]);
}
}
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
]);
}
而且你還可以做修改,根據自己的需要。
感謝
在laravel 5.4,沒有'postLogin'方法。 –
@PankitGami你可以創建你自己的/登錄路線,然後使用這種方法登錄用戶 –
是的,我們可以但我們不會得到油門限制和所有這些。 laravel的登錄方法帶有節流和其他檢查。 我建議使用AuthenticatesUsers特徵的'authenticated'鉤子。 –
將這個功能在你的LoginController
public function postLogin(Request $request)
{
$credentials = $request->only('email', 'password');
$user=User::whereEmail($credentials['email'])->first();
if (!empty($user) && $user->active) {
if (Auth::attempt($credentials)) {
return redirect()->intended($this->redirectPath());
} else {
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors(['email' => $this->getFailedLoginMessage()]
);
}
} else {
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors(['email' => $this->getFailedLoginMessage()]
);
}
}
public function loginPath()
{
return property_exists($this, 'loginTo') ? $this->redirectTo : '/login';
}
protected function getFailedLoginMessage()
{
return Lang::has('auth.failed')
? Lang::get('auth.failed')
: 'set here your custom message.';
}
- 1. 使用asp.net身份驗證與自定義身份驗證
- 2. 在Laravel中自定義身份驗證
- 3. Laravel默認身份驗證與模式
- 4. Laravel身份驗證自定義規則
- 5. Laravel 5自定義身份驗證
- 6. Laravel 5.2自定義身份驗證
- 7. ASP .NET Core Identity默認身份驗證與JWT身份驗證
- 8. Multi-Realm身份驗證(Forms +自定義身份驗證器)
- 9. 自定義身份驗證以形成身份驗證
- 10. 如何創建自定義基本身份驗證或Laravel
- 11. 實現自定義身份驗證(MVC5)
- 12. 在laravel中創建自定義身份驗證系統
- 13. 在Laravel中創建自定義身份驗證
- 14. Laravel 5創建自定義註冊並從默認身份驗證登錄
- 15. loopback如何自定義身份驗證
- 16. Facebook身份驗證令牌未能創建Firebase身份驗證
- 17. Windows身份驗證到使用配置文件的自定義身份驗證
- 18. 如何在wso2身份服務器中創建自定義身份驗證5.3
- 19. 創建身份驗證laravel 5
- 20. 如何設置asp.net mvc身份的自定義身份驗證?
- 21. Laravel 4身份驗證與Facebook(無密碼身份驗證)
- 22. Laravel身份驗證 - 身份驗證與Sentry
- 23. 如何在自定義MembershipProvider中創建身份驗證Cookie?
- 24. 如何在OData上實現自定義身份驗證
- 25. WCF自定義用戶身份驗證
- 26. 自定義用戶身份驗證
- 27. 在CakePHP中自定義身份驗證
- 28. 自定義身份驗證 - 用戶登錄但未經過身份驗證
- 29. Laravel rest api身份驗證
- 30. Laravel身份驗證錯誤
我不知道爲什麼我對這個答案比另一個感興趣,但是我應該把你給的代碼放在哪裏?在LoginController上? –
是的。檢查你的'LoginController',必須有'使用AuthenticatesUsers'語句。所以你只是重寫'AuthenticatesUsers'特徵的'authenticated'方法。 –
我粘貼到LoginController的整個代碼,但沒有不同的用戶仍然可以登錄,甚至活動是false:/ –