拒绝在 Laravel 后重设密码
Deny password reset in Laravel
我正在尝试向 Laravel 中的自定义密码 reset logic 添加规则。
我不想让所有用户重设密码并获得对应用程序的访问权限,因为其中一些用户已被暂停。
我在 Laravel 中创建了新的 rule 以确保这一点,但我不知道将它放在哪里。
我想在这些用户输入电子邮件并点击 "send me password reset link" 后立即对其进行验证
所以他们甚至不会收到重置密码电子邮件。
我应该把这个逻辑放在哪里?我试图将它放在 Http/Controllers/Auth/ResetPasswordController.php
的构造函数中,但没有成功。
谢谢
您可以执行以下操作:
ForgotPasswordController class 是控制是否发送电子邮件的人。它实现了 SendsPasswordResetEmails 特征,如下所示:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
// Adds SendsPasswordResetEmails to the scope
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
[...]
// It uses the SendsPasswordResetEmails Trait
use SendsPasswordResetEmails;
这个特性实现了一些方法:showLinkRequestForm()(显示密码重置视图),还有一个是对您很重要:validateEmail()方法,检查电子邮件是否有效.
您可以像这样在 SendsPasswordResetEmails 中覆盖它:
namespace App\Http\Controllers\Auth;
// You will have to add the Request class to the scope
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
[...]
protected function validateEmail(Request $request)
{
$this->validate($request, [
// Pass an instance of your rule to the validation array
'email' => ['required|email', new YourSpecificRuleHere]
]);
}
这应该可以解决问题,如果电子邮件不适用规则,表单将 return 消息 "Your account has been suspended"。只是不要忘记使用请求 class,如上一个脚本的开头所示!
希望对您有所帮助!
我正在尝试向 Laravel 中的自定义密码 reset logic 添加规则。 我不想让所有用户重设密码并获得对应用程序的访问权限,因为其中一些用户已被暂停。
我在 Laravel 中创建了新的 rule 以确保这一点,但我不知道将它放在哪里。 我想在这些用户输入电子邮件并点击 "send me password reset link" 后立即对其进行验证 所以他们甚至不会收到重置密码电子邮件。
我应该把这个逻辑放在哪里?我试图将它放在 Http/Controllers/Auth/ResetPasswordController.php
的构造函数中,但没有成功。
谢谢
您可以执行以下操作:
ForgotPasswordController class 是控制是否发送电子邮件的人。它实现了 SendsPasswordResetEmails 特征,如下所示:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
// Adds SendsPasswordResetEmails to the scope
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
[...]
// It uses the SendsPasswordResetEmails Trait
use SendsPasswordResetEmails;
这个特性实现了一些方法:showLinkRequestForm()(显示密码重置视图),还有一个是对您很重要:validateEmail()方法,检查电子邮件是否有效.
您可以像这样在 SendsPasswordResetEmails 中覆盖它:
namespace App\Http\Controllers\Auth;
// You will have to add the Request class to the scope
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
[...]
protected function validateEmail(Request $request)
{
$this->validate($request, [
// Pass an instance of your rule to the validation array
'email' => ['required|email', new YourSpecificRuleHere]
]);
}
这应该可以解决问题,如果电子邮件不适用规则,表单将 return 消息 "Your account has been suspended"。只是不要忘记使用请求 class,如上一个脚本的开头所示!
希望对您有所帮助!