laravel修改用户登录密码、laravel登录页面

Image

Laravel修改用户登录密码、Laravel登录页面

在开发Web应用时,用户登录和密码管理是必不可少的功能。本文将介绍如何在Laravel中实现用户登录页面以及如何修改用户的登录密码。我们将通过几种不同的方法来实现这些功能,确保开发者可以根据自己的需求选择最适合的方案。

1. 创建登录页面

首先,我们需要创建一个登录页面。Laravel自带了身份验证系统,我们可以利用它快速生成登录页面。

1.1 使用Laravel内置的身份验证

Laravel提供了内置的身份验证功能,可以快速生成登录和注册页面。

  1. 安装Laravel项目

    bash
    composer create-project --prefer-dist laravel/laravel myproject

  2. 生成身份验证 scaffolding

    bash
    php artisan make:auth

  3. 运行数据库迁移

    bash
    php artisan migrate

  4. 启动开发服务器

    bash
    php artisan serve

  5. 访问登录页面

    打开浏览器,访问 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内置了密码重置功能,可以快速生成密码重置页面和逻辑。

  1. 生成密码重置 scaffolding

    bash
    php artisan make:auth

  2. 运行数据库迁移

    bash
    php artisan migrate

  3. 配置邮件服务

    .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}"

  4. 发送密码重置链接

    用户可以通过点击“忘记密码”链接来请求重置密码。Laravel会生成一个包含重置链接的邮件并发送给用户。

2.2 自定义密码修改逻辑

如果你需要自定义密码修改逻辑,可以在控制器中编写相应的逻辑。

  1. 创建密码修改表单

    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

  2. 创建控制器和路由

    创建一个新的控制器 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.');
    }
    

    }

  3. 添加路由

    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<

(0)
运维的头像运维
上一篇2025-02-06 18:07
下一篇 2025-02-06 18:08

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注