laravel 实现登录注册

发布时间 - 2023-05-20 00:00:00    点击率:

laravel 是一种流行的 php 框架,它提供了一个强大的开发环境,可以让您更容易地构建 web 应用程序。其中一个重要的特性是 laravel 自带的身份验证系统,可以让您快速实现用户认证,包括登录和注册。在本文中,我们将演示如何使用 laravel 实现登录注册。

部署环境
在开始实现身份验证之前,我们需要确保 Laravel 环境已经配置好并且数据库连接已经配置。如果您还没有安装 Laravel,可以参考官方文档中的安装指南。在 Laravel 应用程序中,我们使用 Artisan 命令行工具创建必要的文件和目录结构。在命令行中,我们可以使用以下命令创建新的 Laravel 应用程序:

composer create-project --prefer-dist laravel/laravel blog

创建之后,导航到应用程序的根目录,运行以下命令生成应用程序密钥:

php artisan key:generate

注册路由
在 Laravel 中,路由是连接 URI 和对应控制器方法的桥梁。要注册我们的身份验证路由,我们需要更新 routes/web.php 文件。在这个文件中,我们定义了应用程序的路由,其中包括登录和注册路由。

首先,我们需要定义发送 POST 请求到 /register 的路由,并将其绑定到 RegisterController 的 register() 方法。这将呈现一个注册表单,用户可以填写其用户名和密码。

Route::post('/register', 'AuthRegisterController@register')->name('register');

接下来,我们需要定义发送 POST 请求到 /login 的路由,并将其绑定到 LoginController 的login() 方法。这将呈现一个登录表单,用户可以填写登录名和密码。如果用户没有有效的凭据进行验证,则应用程序会重定向到登录表单。

Route::post('/login', 'AuthLoginController@login')->name('login');

最后,我们需要定义所有受保护的路由。在 Laravel 中,我们可以使用 auth 中间件来确保用户已经通过身份验证。这个中间件将自动重定向未经验证的用户到 /login 路由。

Route::middleware(['auth'])->group(function () {

// your protected routes go here

});

处理控制
我们已经定义了必要的路由,现在需要在控制器中处理它们。在 Laravel 中,控制器是处理特定 HTTP 请求的类,控制器中的方法返回 HTTP 响应。在应用程序中,我们需要创建两个控制器用于处理注册和登录请求。

在 app/Http/Controllers/Auth 目录下,创建 LoginController.php 和 RegisterController.php 两个文件,这两个文件是 Laravel 自带的控制器类。在这些控制器中,我们需要覆盖 Laravel 的默认方法,为登录和注册请求提供自定义的功能。

登录控制器
我们首先来看 LoginController.php 控制器。此控制器包含两个方法:showLoginForm() 和 login()。

showLoginForm() 方法返回登录表单视图(resources/views/auth/login.blade.php),该视图包含一个表单,用户可以输入登录名和密码。这个方法是由 Laravel 所提供的。

public function showLoginForm()
{

return view('auth.login');

}

login() 方法是真正实现登录逻辑的地方。这个方法接收一个 IlluminateHttpRequest 实例,并使用该实例的 validate() 方法验证用户输入。如果表单验证成功,Laravel 将自动搜索使用给定登录名和密码的用户,并将其登录到应用程序中。

public function login(Request $request)
{

$request->validate([
    'email' => 'required|string|email',
    'password' => 'required|string',
    'remember' => 'boolean'
]);

$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials, $request->remember)) {
    return redirect()->intended('dashboard');
}

return redirect()->back()->withInput($request->only('email', 'remember'));

}

注意,attempt() 方法将根据给定的凭据来自动检查密码是否正确。如果密码不正确,则会返回 false。

如果用户已经成功验证,并且他们之前请求的 URL 被存储起来(通常指被 auth 中间件阻止的URL),我们可以使用 Laravel 辅助函数 intended() 来将其重定向到该 URL。如果未存储任何 URL,则重定向到前端控件台(/dashboard)。

注册控制器
接下来我们来看 RegisterController.php 控制器。除了 Laravel 的默认方法之外,我们还需要实现 register() 方法。

register() 方法非常类似于 login() 方法。它接收一个 IlluminateHttpRequest 实例,并使用该实例的 validate() 方法验证用户输入。如果表单验证成功,Laravel 将创建一个新用户,并将其保存到数据库中。然后,我们可以使用 Laravel 的默认行为将用户登录到应用程序中。

public function register(Request $request)
{

$request->validate([
    'name' => 'required|string|max:255',
    'email' => 'required|string|email|max:255|unique:users',
    'password' => 'required|string|min:6|confirmed',
]);

$user = User::create([
    'name' => $request->name,
    'email' => $request->email,
    'password' => Hash::make($request->password),
]);

Auth::login($user);

return redirect()->intended('dashboard');

}

在注册控制器中我们可以使用 Hash 辅助函数来对密码进行加密。如果密码验证成功,我们将创建新用户并将其登录到应用程序中。

视图层
现在我们已经定义了必要的路由和控制器,接下来需要创建身份验证视图。

在 resources/views/auth 目录中,我们可以创建 login.blade.php 和 register.blade.php 两个视图文件。这些视图包含登录和注册表单,使用了一些 Laravel 帮助程序,可以处理表单验证并显示错误消息。

登录视图
在 login.blade.php 文件中,我们可以使用 Laravel 的 Form 辅助函数创建登录表单。这个函数会自动为表单添加 CSRF 令牌,并为输入字段编写 HTML 标记。

@csrf


    

    
        

        @if ($errors->has('email'))
            
                {{ $errors->first('email') }}
            
        @endif
    



    

    
        

        @if ($errors->has('password'))
            
                {{ $errors->first('password') }}
            
        @endif
    



    
        
            

            
        
    



    
        

        @if (Route::has('password.request'))
            
                {{ __('Forgot Your Password?') }}
            
        @endif
    

注意,我们使用了 Blade 模板引擎的 @csrf 和 @if 语句来生成必要的 CSRF 令牌并显示验证错误。

注册视图
在 register.blade.php 文件中,我们可以使用 Laravel 的 Form 帮助器创建注册表单。这个函数自动为表单添加 CSRF 令牌,并为输入字段编写 HTML 标记。

@csrf


    

    
        

        @if ($errors->has('name'))
            
                {{ $errors->first('name') }}
            
        @endif
    



    

    
        

        @if ($errors->has('email'))
            
                {{ $errors->first('email') }}
            
        @endif
    



    

    
        

        @if ($errors->has('password'))
            
                {{ $errors->first('password') }}
            
        @endif
    



    

    
        
    



    
        
    

注意,我们使用了 Blade 模板引擎的 @csrf 和 @if 语句来生成必要的 CSRF 令牌并显示验证错误消息。

结论
通过 Laravel 可以快速、方便、安全地实现 Web 应用程序的登录和注册身份验证功能,从而保护您的应用程序免受未授权的访问。在本文中,我们介绍了 Laravel 的身份验证系统并实现了注册和登录。现在,您可以使用这些基础知识构建更完整的用户身份验证系统,或将其集成到您的现有应用程序中。


# 表单  # 应用程序  # 可以使用  # 身份验证  # 令牌  # 重定向  # 用户可以  # 您的  # 器中  # 并将其 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Linux系统命令中tree命令详解  教学论文网站制作软件有哪些,写论文用什么软件 ?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  PHP 500报错的快速解决方法  Laravel如何处理异常和错误?(Handler示例)  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  *服务器网站为何频现安全漏洞?  iOS发送验证码倒计时应用  Laravel集合Collection怎么用_Laravel集合常用函数详解  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  香港服务器选型指南:免备案配置与高效建站方案解析  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  Laravel如何使用Eloquent进行子查询  昵图网官方站入口 昵图网素材图库官网入口  桂林网站制作公司有哪些,桂林马拉松怎么报名?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Python数据仓库与ETL构建实战_Airflow调度流程详解  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Android 常见的图片加载框架详细介绍  焦点电影公司作品,电影焦点结局是什么?  ,交易猫的商品怎么发布到网站上去?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何解决hover在ie6中的兼容性问题  网易LOFTER官网链接 老福特网页版登录地址  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel如何实现文件上传和存储?(本地与S3配置)  详解jQuery停止动画——stop()方法的使用  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  EditPlus中的正则表达式 实战(2)  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  如何在 React 中条件性地遍历数组并渲染元素  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Android使用GridView实现日历的简单功能  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何快速辨别茅台真假?关键步骤解析  黑客如何利用漏洞与弱口令入侵网站服务器?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Python3.6正式版新特性预览