Laravel具有帐户锁定功能。 但是它基于IP地址。 也可以伪装。 因此,我想锁定帐户本身而不用考虑IP地址的不同
我该怎么办?
答案 0 :(得分:1)
我为此做了一个包装:)
您可以阻止用户,电子邮件,IP地址,域名,城市,州,国家,大洲和地区使用您的应用程序,登录或注册。
答案 1 :(得分:0)
限制未锁定,因此即使您将其更改为不绑定到IP,该帐户也可以在等待一段时间后再次登录。
如果这是您要执行的操作,则可以覆盖throttleKey
函数以使用不基于IP的密钥。如果您想完全禁止某人,那么您也可以将decayMinutes
改写为100年。
例如,在您的常规身份验证控制器中:
class class LoginController extends Controller {
use AuthenticatesUsers;
// ...
public $decayMinutes = 52560000; // 100 years
protected function throttleKey(Request $request)
{
return Str::lower($request->input($this->username())); // No IP here now
}
}
注意:由于速率限制器将值存储在缓存中,因此清除缓存也将清除被阻止的用户。如果需要更永久的解决方案,则可以在数据库中的用户条目上添加一个标志,指示该用户已被阻止。这只是一种快速而肮脏的解决方案,可让您快速地工作。
另一个要点:不通过IP进行阻止意味着,如果其他人试图侵入其帐户,则您将其锁定。对于您的用户来说,这可能有点令人生气,这也是要考虑的事情。