在 Laravel 7 中,可以通过以下步骤来发送密码设置(重置链接):
php artisan make:auth
php artisan migrate
这将生成包含用户认证和密码重置功能的相关文件和数据库表。
config/auth.php
文件中,确保 passwords
配置项中的 users
使用了正确的用户模型。App\Models\User
,使用 Illuminate\Foundation\Auth\ResetsPasswords
trait 来引入密码重置相关的方法。例如:use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Notifications\Notifiable;
use Illuminate\Auth\Passwords\CanResetPassword;
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable, CanResetPassword;
// ...
}
routes/web.php
文件中,Laravel 已经为密码重置功能生成了相关的路由。你可以通过以下代码来查看和修改这些路由:use Illuminate\Support\Facades\Route;
Route::get('password/reset', 'App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'App\Http\Controllers\Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'App\Http\Controllers\Auth\ResetPasswordController@reset')->name('password.update');
resources/views/auth/passwords/email.blade.php
,可以使用以下代码来显示密码重置链接的表单:<form method="POST" action="{{ route('password.email') }}">
@csrf
<div>
<label for="email">Email Address</label>
<input id="email" type="email" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
</div>
<div>
<button type="submit">
Send Password Reset Link
</button>
</div>
</form>
App\Http\Controllers\Auth\ForgotPasswordController
控制器中,可以使用 SendsPasswordResetEmails
trait 来处理发送密码重置链接的逻辑。例如:namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
use SendsPasswordResetEmails;
// ...
}
.env
文件中配置邮件驱动和相关的参数,例如使用腾讯云的邮件服务,可以配置如下:MAIL_DRIVER=smtp
MAIL_HOST=smtp.exmail.qq.com
MAIL_PORT=465
MAIL_USERNAME=your-email@example.com
MAIL_PASSWORD=your-email-password
MAIL_ENCRYPTION=ssl
领取专属 10元无门槛券
手把手带您无忧上云