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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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