前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >laravel5分钟完成登录注册

laravel5分钟完成登录注册

作者头像
horan2
发布2023-07-25 14:19:29
1730
发布2023-07-25 14:19:29
举报
文章被收录于专栏:程序猿的修炼手册

以下均是在laravel5.2+版本进行操作,5.1部分适用,建议使用5.2新增许多方便的功能,5.1的多表验证极其麻烦,不推荐使用

在使用laravel框架前,我们需要安装composer

在安装好composer以后,让我们建一个新的项目

不懂安装composer的可以看    http://www.phpcomposer.com/

代码语言:javascript
复制
composer create-project laravel/laravel laravel

最后的参数是我们需要建立的项目名

laravel 框架默认带着一个model----User,直接放在app下(事实上我们往往会把model放在一个文件夹下,例如我们可以自己去新增model在命令行下,php artisan Models/User,这样我们新增的model就放在了app/Models目录下了)

自带的还有两个数据库迁移文件,create_users_table,create_password_reset_table(放在database/migrations),我们可以直接使用php artisan migrate 来创建数据表(当然前提是你要新建一个数据库,数据库配置写在.env文件里,如果没有就复制.env.example粘贴重命名.env)

接下来输入php artisan make:auth 它会自动生成一些前端视图(放在resources/views),用户登陆后的个人中心的HomeController(Http/Controllers)

也会更新路由(Http/routes.php)如下

代码语言:javascript
复制
Route::get('/', function () {
    return view('welcome');
});

Route::auth();

Route::get('/home', 'HomeController@index');

除了欢迎界面(刚才已经更新了欢迎见面,可以重新打开查看)外,新增了两条路由,可是我们不太清楚他是指到哪的,可以输入php artisan route:list来查看

$ php artisan route:list +--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+ | Domain | Method   | URI                     | Name | Action                       | Middleware | +--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+ |        | GET|HEAD | /                       |      | Closure                                                         | web        | |        | GET|HEAD | home                    |      | App\Http\Controllers\HomeController@index                       | web,auth   | |        | GET|HEAD | login                   |      | App\Http\Controllers\Auth\AuthController@showLoginForm          | web,guest  | |        | POST     | login                   |      | App\Http\Controllers\Auth\AuthController@login                  | web,guest  | |        | GET|HEAD | logout                  |      | App\Http\Controllers\Auth\AuthController@logout                 | web        | |        | POST     | password/email          |      | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | web,guest  | |        | POST     | password/reset          |      | App\Http\Controllers\Auth\PasswordController@reset              | web,guest  | |        | GET|HEAD | password/reset/{token?} |      | App\Http\Controllers\Auth\PasswordController@showResetForm      | web,guest  | |        | GET|HEAD | register                |      | App\Http\Controllers\Auth\AuthController@showRegistrationForm   | web,guest  | |        | POST     | register                |      | App\Http\Controllers\Auth\AuthController@register               | web,guest  | +--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+ 此时我们可以尝试注册登陆了

以上已经将注册登录的功能实现了,我们来看看具体的代码吧

从点击注册看,也就是到了 GET register 的这条路由,我们找到AuthController里的showRegistrationForm  这个方法(是放在AuthenticatesAndRegistersUsers里的RegistersUsers这个trait里的)这段代码

代码语言:javascript
复制
/**
     * Show the application registration form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showRegistrationForm()
    {
        if (property_exists($this, 'registerView')) {
            return view($this->registerView);
        }

        return view('auth.register');
    }

即返回views/auth/register.blade.php这个视图文件,这个form的action是这样的

代码语言:javascript
复制
<form class="form-horizontal" role="form" method="POST" action="{{ url('/register') }}">

也就是到了 POST register 的那条路由,再找到它的方法

代码语言:javascript
复制
/**
     * Handle a registration request for the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function register(Request $request)
    {
        $validator = $this->validator($request->all());

        if ($validator->fails()) {
            $this->throwValidationException(
                $request, $validator
            );
        }

        Auth::guard($this->getGuard())->login($this->create($request->all()));

        return redirect($this->redirectPath());
    }

他做的工作就是先验证数据是否合法,如果不合法会返回错误信息,否则就是验证成功,写入数据库,写入cookie登陆,最后跳转到AuthController里定义的 protected $redirectTo =‘/’  也就是首页了

之后我们可以尝试退出登录,再登陆,也是调用的  trait AuthenticatesUsers  这里的一些方法,此时我们也有了重置密码的功能(忘了密码?)需要在.env文件里填写正确的邮箱,以便于我们发邮件确认。

以上均是基本的单表验证,往往我们用的是前台的一个表和后台的一个表进行多表验证,欢迎看我的下一篇博文,laravel多表验证。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档