Laravel如何实现登录失败次数限制

  介绍

这篇文章将为大家详细讲解有关Laravel如何实现登录失败次数限制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在用户身份验证的情况下,Laravel具有内置的身份验证系统。我们可以根据要求轻松修改它。身份验证中包含的功能之一是节流。

<>强为什么我们需要节流保护?

基本上,节流是用来保护暴力攻击的。它将在一定时间内检查登录尝试。在短登录中,节流会计算用户或机器人尝试失败的登录尝试次数。

<强>使用自定义登录实现限制

默认情况下,在内置身份验证控制器中实现限制。但是,如果我们需要实现它到自定义登录呢?

实现自定义登录限制非常容易。首先,我们必须将ThrottlesLogins特征包含到您的控制器中。

使用说明\ \ Auth \ ThrottlesLogins基础;

现在,将此ThrottlesLogins特征加到控制器中。

namespace 应用\ Http \控制器;   use 照亮\ Http \请求;   use 照亮\ \ Auth \ ThrottlesLogins基础;   class  AuthController  extends 控制器   {   ,use  ThrottlesLogins;   ,……

现在转到用于对用户进行身份验证的方法。在我的例子中,我使用了登录()发布方法。并粘贴以下代码:

public  function 登录(Request  $请求)   {   ,//Authenticate 输入   美元,请求→验证([   ,& # 39;用户名# 39;,=祝辞,& # 39;需要# 39;,,   ,& # 39;密码# 39;,=祝辞,& # 39;要求|分钟:6 |马克斯:18 & # 39;   ,]);   ,//If 从而class  is  using 从而ThrottlesLogins 特征,还要automatically 节流我方表示歉意//大敌;从而,login  attempts  for 却;能够应用程序只我们# 39;ll  key 却;能够by 从而username //大敌;从而,IP  address  of 从而client  making  these  requests  into 却;能够应用程序。   ,if  (method_exists ($ this, & # 39; hasTooManyLoginAttempts& # 39;),,,   ,$ this→hasTooManyLoginAttempts(请求)美元),{   美元,美元这→fireLockoutEvent(请求);   ,return 这→美元sendLockoutResponse($请求);   ,}   ,   以前,.......

首先,我们验证了用户提交的输入,然后实现了hasTooManyLoginAttempts()方法。此方法将检查用户在某个时间是否执行过一定数量的失败尝试,然后系统将通过sendLockoutResponse (),方法阻止该用户。

现在,我们必须通过incrementLoginAttempts()方法指示对ThrottlesLogins特质的失败登录尝试。

如果(,身份验证:尝试((& # 39;用户名# 39;,=祝辞,用户名、美元,& # 39;密码# 39;,=祝辞,$密码]),){   ,//Redirect 用appropriate  dashboard    }   else  {   ,//If 从而login  attempt  was  unsuccessful  will  increment 我方表示歉意,number  of 尝试   ,//用login 以及redirect 从而user  back 用,login 形式只Of 当然,when 这   ,//user  surpasses  their  maximum  number  of  attempts 活动对象;will  get  locked 。   美元,美元这→incrementLoginAttempts(请求);   ,return 重定向()→()   →withInput才能($请求→所有())   →才能withErrors([& # 39;错误# 39;,=祝辞,& # 39;Please  check  your  username /,密码# 39;公司]);   }

您还可以通过maxAttempts美元和美元decayMinutes属性更改允许的最大尝试次数和限制的分钟数。在这里,您可以找到完整的代码。

& lt; php ?   namespace 应用\ Http \控制器;   use 照亮\ Http \请求;   use 照亮\ \ Auth \ ThrottlesLogins基础;   class  AuthController  extends 控制器   {   ,use  ThrottlesLogins;/* *   *才能,从而maximum  number  of  attempts 用允许。   ,*   *,才能@return  int   ,*/,protected  maxAttempts 美元;=,5;/* *   *才能,从而number  of  minutes 用throttle 。   ,*   *,才能@return  int   ,*/,protected  decayMinutes 美元;=,1;   ,public  function 登录(Request 美元请求)   ,{//才能,Authenticate 输入   美元才能请求→验证([   ,,& # 39;用户名# 39;,=祝辞,& # 39;需要# 39;,,   ,,& # 39;密码# 39;,=祝辞,& # 39;要求|分钟:6 |马克斯:18 & # 39;   )才能);//才能,If 从而class  is  using 从而ThrottlesLogins 特征,还要automatically 节流我方表示歉意//才能,从而login  attempts  for 却;能够应用程序只我们# 39;ll  key 却;能够by 从而username //才能,从而IP  address  of 从而client  making  these  requests  into 却;能够应用程序。   if 才能;(method_exists ($ this, & # 39; hasTooManyLoginAttempts& # 39;),,,   ,,这→美元hasTooManyLoginAttempts(请求)美元),{   ,,这→美元fireLockoutEvent($请求);   ,,return 美元这→sendLockoutResponse($请求);   ,,}   时间=美元才能username 美元请求→用户名;   时间=美元才能password 美元请求→密码;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Laravel如何实现登录失败次数限制