Laravel修改用户登录密码、Laravel登录页面
在开发Web应用时,用户登录和密码管理是必不可少的功能。本文将介绍如何在Laravel中实现用户登录页面以及如何修改用户的登录密码。我们将通过几种不同的方法来实现这些功能,确保开发者可以根据自己的需求选择最适合的方案。
1. 创建登录页面
首先,我们需要创建一个登录页面。Laravel自带了身份验证系统,我们可以利用它快速生成登录页面。
1.1 使用Laravel内置的身份验证
Laravel提供了内置的身份验证功能,可以快速生成登录和注册页面。
安装Laravel项目
bash
composer create-project --prefer-dist laravel/laravel myproject生成身份验证 scaffolding
bash
php artisan make:auth运行数据库迁移
bash
php artisan migrate启动开发服务器
bash
php artisan serve访问登录页面
打开浏览器,访问
http://localhost:8000/login
,即可看到默认的登录页面。
1.2 自定义登录页面
如果你需要自定义登录页面,可以在 resources/views/auth
目录下创建一个新的登录视图文件 login.blade.php
。
html
<!-- resources/views/auth/login.blade.php -->
@extends('layouts.app')</p>
<p>@section('content')</p>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Login') }}</div>
<div class="card-body">
@csrf
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
<div class="col-md-6">
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
<div class="col-md-6">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<div class="col-md-6 offset-md-4">
<div class="form-check">
<label class="form-check-label" for="remember">
{{ __('Remember Me') }}
</label>
</div>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Login') }}
</button>
@if (Route::has('password.request'))
<a class="btn btn-link" href="{{ route('password.request') }}">
{{ __('Forgot Your Password?') }}
</a>
@endif
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>@endsection
2. 修改用户登录密码
修改用户登录密码也是常见的需求。我们可以通过多种方式实现这一功能,包括使用Laravel内置的密码重置功能或自定义密码修改逻辑。
2.1 使用Laravel内置的密码重置功能
Laravel内置了密码重置功能,可以快速生成密码重置页面和逻辑。
生成密码重置 scaffolding
bash
php artisan make:auth运行数据库迁移
bash
php artisan migrate配置邮件服务
在
.env
文件中配置你的邮件服务,例如使用SMTP:env
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=from@example.com
MAIL_FROM_NAME="${APP_NAME}"发送密码重置链接
用户可以通过点击“忘记密码”链接来请求重置密码。Laravel会生成一个包含重置链接的邮件并发送给用户。
2.2 自定义密码修改逻辑
如果你需要自定义密码修改逻辑,可以在控制器中编写相应的逻辑。
创建密码修改表单
在
resources/views/auth
目录下创建一个新的视图文件change-password.blade.php
。html <!-- resources/views/auth/change-password.blade.php --> @extends('layouts.app')</p> <p>@section('content')</p> <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">{{ __('Change Password') }}</div> <pre><code> <div class="card-body"> <form method="POST" action="{{ route('password.update') }}"> @csrf <div class="form-group row"> <label for="current_password" class="col-md-4 col-form-label text-md-right">{{ __('Current Password') }}</label> <div class="col-md-6"> <input id="current_password" type="password" class="form-control @error('current_password') is-invalid @enderror" name="current_password" required autocomplete="current-password"> @error('current_password') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="new_password" class="col-md-4 col-form-label text-md-right">{{ __('New Password') }}</label> <div class="col-md-6"> <input id="new_password" type="password" class="form-control @error('new_password') is-invalid @enderror" name="new_password" required autocomplete="new-password"> @error('new_password') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="new_password_confirmation" class="col-md-4 col-form-label text-md-right">{{ __('Confirm New Password') }}</label> <div class="col-md-6"> <input id="new_password_confirmation" type="password" class="form-control" name="new_password_confirmation" required autocomplete="new-password"> </div> </div> <div class="form-group row mb-0"> <div class="col-md-8 offset-md-4"> <button type="submit" class="btn btn-primary"> {{ __('Change Password') }} </button> </div> </div> </form> </div> </div> </div> </div>
@endsection
创建控制器和路由
创建一个新的控制器
ChangePasswordController
并定义修改密码的方法。php // app/Http/Controllers/ChangePasswordController.php namespace AppHttpControllers;</p> <p>use IlluminateHttpRequest; use IlluminateSupportFacadesHash; use IlluminateSupportFacadesAuth; use AppModelsUser;</p> <p>class ChangePasswordController extends Controller { public function showChangePasswordForm() { return view('auth.change-password'); }</p> <pre><code>public function changePassword(Request $request) { $request->validate([ 'current_password' => 'required', 'new_password' => 'required|confirmed|min:8', ]); $user = Auth::user(); if (!Hash::check($request->current_password, $user->password)) { return back()->withErrors(['current_password' => 'The current password is incorrect.']); } $user->password = Hash::make($request->new_password); $user->save(); return redirect()->route('home')->with('success', 'Your password has been changed successfully.'); }
}
添加路由
在
routes/web.php
中添加路由。php
// routes/web.php
Route::get('/change-password', [ChangePasswordController::class, 'showChangePasswordForm'])->name('password.change');
Route::post('/password/update', [ChangePasswordController::class, 'changePassword'])->name('password.update');
通过以上步骤,你可以在Laravel中实现用户登录页面和修改密码的功能。希望这些方法能帮助你在开发过程中更加高效地完成相关功能。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/68489.html<