use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
use Illuminate\Http\Response;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Response;
use \Laravel\Passport\Http\Controllers\AccessTokenController as AccessTokenController;
class AuthController extends AccessTokenController
{
use AuthenticatesUsers;
//custom login method
public function login(Request $request)
{
//...
}
}
在执行任何其他登录操作之前,请检查用户是否已达到最大登录尝试次数:
//custom login method
public function login(Request $request)
{
//check if the max number of login attempts has been reached
if ($this->hasTooManyLoginAttempts($request))
{
$this->fireLockoutEvent($request);
return "To many attempts...";
}
//...
}
通过尝试登录验证用户凭据。如果登录成功,则重置失败尝试计数。如果失败,则增加计数:
//check if user has reached the max number of login attempts
//verify user credentials
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials))
{
//reset failed login attemps
$this->clearLoginAttempts($request);
//...
}
else
{
//count user failed login attempts
$this->incrementLoginAttempts($request);
return "Login failed...";
}
2条答案
按热度按时间vzgqcmou1#
事实上,拉威尔已经有这个功能,你可以检查下面的链接有关https://laravel.com/docs/5.6/authentication#login-节流
lymgl2op2#
我已经完成了我想做的事情,如果有人遇到这个问题,下面是我所做的。。。
创建了自定义authcontroller和login方法以替换laravel passport的默认oauth/令牌:
在执行任何其他登录操作之前,请检查用户是否已达到最大登录尝试次数:
通过尝试登录验证用户凭据。如果登录成功,则重置失败尝试计数。如果失败,则增加计数:
最后,由于passport(oauth2)使用psr-7请求(服务器请求接口),我们需要将标准的laravel请求转换为psr-7,以便发出访问令牌:
以下是完整的登录方法: