Laravel 电子邮件验证 link 问题
Laravel email verification link issue
在我的 laravel 应用程序中 url 是这样的,admin.site
我正在从管理面板向我的应用程序注册用户。
我的客户端 url 是 customer.site
。
管理员从管理面板 (admin.site) 创建用户后,客户会收到一封帐户验证电子邮件。但现在的问题是我需要这个验证 link 是
customer.site/email/...
但是现在的link是这样的
admin.site/email/...
那么如何将此验证 link 更改为 customer.site
以下是我的客户控制器商店功能
public function store(Request $request)
{
request()->validate([
'name' => ['required', 'alpha','min:2', 'max:255'],
'last_name' => ['required', 'alpha','min:2', 'max:255'],
'email' => ['required','email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:12', 'confirmed','regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{12,}$/'],
'mobile'=>['required', 'regex:/^\+[0-9]?()[0-9](\s|\S)(\d[0-9]{8})$/','numeric','min:9'],
'username'=>['required', 'string', 'min:4', 'max:10', 'unique:users'],
'roles'=>['required'],
'user_roles'=>['required'],
]);
//Customer::create($request->all());
$input = $request->all();
$input['password'] = Hash::make($input['password']);
$user = User::create($input);
$user->assignRole($request->input('roles'));
event(new Registered($user));
return redirect()->route('customers.index')
->with('success','Customer created successfully. Verification email has been sent to user email. ');
}
我正在发送验证邮件
event(new Registered($user));
由于客户无法访问管理站点,因此我收到 403 错误消息。
对于可能发送大量电子邮件的应用程序,使用电子邮件通知很有用。
可以通过执行以下命令创建通知:
php artisan make:notification SendRegisterEmailNotifcation
此命令将创建一个 SendRegisterEmailNotifcation 文件,可以通过导航到 app/Notifications/SendRegisterEmailNotifcation.php路径。
完成此操作并自定义消息、操作和其他可能的内容后,您的商店功能将如下所示。
我已经删除了验证并将其放入请求中。如果您对它的工作原理感兴趣,可以在下面找到一个示例。
可在此处找到有关通知的更多信息:https://www.cloudways.com/blog/laravel-notification-system-on-slack-and-email/
// CustomerController
public function store(StoreCustomerRequest $request)
{
// Get input from the request and hash the password
$input = $request->all();
$input['password'] = Hash::make($input['password']);
// Create user and assign role
$user = User::create($input);
$user->assignRole($request->input('roles'));
// Send Register Email
$user->notify(new SendRegisterEmailNotifcation);
return redirect()->route('customers.index')
->with('success','Customer created successfully. Verification email has been sent to user email. ');
}
我建议创建请求以验证数据。这样控制器将保持清洁,并且您实际上验证了 laravel 预期的数据。
//StoreCustomerRequest
class StoreCustomerRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check();
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
// @todo Add validation rules
return [
'name' => 'required|string|max:255',
'last_name' => 'required|alpha|min:2|max:255'
'email' => 'required|string|email|max:255|unique:users',
];
}
}
将通知添加到您的客户模型中。必须这样做才能发送通知。
// Customer model
class Customer {
use Notifiable;
}
在我的 laravel 应用程序中 url 是这样的,admin.site
我正在从管理面板向我的应用程序注册用户。
我的客户端 url 是 customer.site
。
管理员从管理面板 (admin.site) 创建用户后,客户会收到一封帐户验证电子邮件。但现在的问题是我需要这个验证 link 是
customer.site/email/...
但是现在的link是这样的
admin.site/email/...
那么如何将此验证 link 更改为 customer.site
以下是我的客户控制器商店功能
public function store(Request $request)
{
request()->validate([
'name' => ['required', 'alpha','min:2', 'max:255'],
'last_name' => ['required', 'alpha','min:2', 'max:255'],
'email' => ['required','email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:12', 'confirmed','regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{12,}$/'],
'mobile'=>['required', 'regex:/^\+[0-9]?()[0-9](\s|\S)(\d[0-9]{8})$/','numeric','min:9'],
'username'=>['required', 'string', 'min:4', 'max:10', 'unique:users'],
'roles'=>['required'],
'user_roles'=>['required'],
]);
//Customer::create($request->all());
$input = $request->all();
$input['password'] = Hash::make($input['password']);
$user = User::create($input);
$user->assignRole($request->input('roles'));
event(new Registered($user));
return redirect()->route('customers.index')
->with('success','Customer created successfully. Verification email has been sent to user email. ');
}
我正在发送验证邮件
event(new Registered($user));
由于客户无法访问管理站点,因此我收到 403 错误消息。
对于可能发送大量电子邮件的应用程序,使用电子邮件通知很有用。 可以通过执行以下命令创建通知:
php artisan make:notification SendRegisterEmailNotifcation
此命令将创建一个 SendRegisterEmailNotifcation 文件,可以通过导航到 app/Notifications/SendRegisterEmailNotifcation.php路径。 完成此操作并自定义消息、操作和其他可能的内容后,您的商店功能将如下所示。 我已经删除了验证并将其放入请求中。如果您对它的工作原理感兴趣,可以在下面找到一个示例。
可在此处找到有关通知的更多信息:https://www.cloudways.com/blog/laravel-notification-system-on-slack-and-email/
// CustomerController
public function store(StoreCustomerRequest $request)
{
// Get input from the request and hash the password
$input = $request->all();
$input['password'] = Hash::make($input['password']);
// Create user and assign role
$user = User::create($input);
$user->assignRole($request->input('roles'));
// Send Register Email
$user->notify(new SendRegisterEmailNotifcation);
return redirect()->route('customers.index')
->with('success','Customer created successfully. Verification email has been sent to user email. ');
}
我建议创建请求以验证数据。这样控制器将保持清洁,并且您实际上验证了 laravel 预期的数据。 //StoreCustomerRequest
class StoreCustomerRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check();
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
// @todo Add validation rules
return [
'name' => 'required|string|max:255',
'last_name' => 'required|alpha|min:2|max:255'
'email' => 'required|string|email|max:255|unique:users',
];
}
}
将通知添加到您的客户模型中。必须这样做才能发送通知。
// Customer model
class Customer {
use Notifiable;
}