专栏首页程序员小助手3分钟短文:为了你少跳坑,Laravel写好了用户授权
原创

3分钟短文:为了你少跳坑,Laravel写好了用户授权

引言

为了留存用户,我们会想尽办法获取用户的注册,并将其留在应用内。 laravel开发好了一部分用户注册和登陆的代码,如果图省事不要二次开发的, 拿来用就可以了。而如果要深度定制用户权限的开发者,也非常有必要了解用户和授权相关的内容。

USER

本期为大家说一说用户注册和登陆的功能。

users数据表

用户的数据和信息必然在数据库内,所以laravel自带了User模型,在 app/User.php 文件内, 内部代码声明了必要的部分:

namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
​
class User extends Authenticatable
{
    use Notifiable;
    protected $fillable = [
        'name', 'email', 'password',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
}

大家可能会注意到,这个模型文件与我们之前介绍的 Model 模型差别非常大,因为其直接继承了 Illuminate\Foundation\Auth\User 类, 我们接着追溯该类的内容:

class User extends Model implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail;
}

原来在此处,User 类不仅继承了Model模型类,还实现了很多个与权限相关的接口类。

  • AuthenticatableContract 用于识别用户身份和token等
  • AuthorizableContract 用于定义用户是否有某些权限
  • CanResetPasswordContract 用于修改密码

这些内容,我们其他章节再详细讲解。

有了模型还没有数据库表,这个模型除了能处理逻辑,一点数据都拿不到。所以第一步我们要把数据库迁移完成。

来看一下默认的users表的迁移文件 2014_10_12_000000_create_users_table.php 的内容,还是我们之前无数次强调过的,先实现 up 方法用于迁移表格:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

还有一个是回滚迁移使用的 down 方法:

public function down()
{
    Schema::dropIfExists('users');
}

迁移回滚的时候,如果users表创建成功了,就将其删除。 在命令行执行迁移指令:

php artisan migrate

执行成功后使用mysql客户端连接数据库,打印users表结构,如下图:

TABLE

登陆注册

有了users表的数据支持,还有laravel内置的用户逻辑,我们可以很方便地拥有一个登陆和注册的页面。 在命令行执行指令:

php artisan make:auth

这是一个脚手架指令,直观地可以看到首页登陆多了 LGOIN, REGISTER 导航按钮。还有在 ** resources/views/auth** 目录内, 创建了默认的视图文件。

看一下路由文件 routes/web.php ,多了一行代码:

Auth::routes();

这个就跟我们使用 Route::resource() 方法会默认创建restfulapi需要的所有控制器方法一样,这个 Auth::routes() 所包含的内容, 都是跟用户注册登录,忘记密码,重置密码等等息息相关的。

预注册的路由如下图:

ROUTES

这洋洋洒洒的路由和控制器方法,如果我们自己设计,那得费多少时间?这下好,拿来直接用了。要不说laravel真香呢! 下面是默认的注册前端页面。

LOGIN

写在最后

本文介绍了如何使用laravel自带的users表所关联的用户授权功能, 可以说是一个具有用户功能的应用程序的基石,我们后面的文章会着重深入介绍。

Happy coding :-)

我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 3分钟短文 | Laravel 用户授权原来内置了这么多方法

    laravel已经内置了一套授权和权限分配的功能,我们不用从零开始设计,这方便了很多。但是, 因为集成在框架内的缘故,很多时候对于用户体系甚至有些陌生。本文通过...

    程序员小助手
  • PHP实现微信公众号验证Token的示例代码

    很久之前做过一次公众号的开发,当时就遇到了一个验证的小坑,但是由于时间紧任务急处理完了也就没在意,可谁知最近刚刚上马一个新的公众号项目又遇到了同样的小坑,痛定思...

    砸漏
  • Laravel 使用 laravel-s 引发登陆状态问题(所有终端都登陆)

    说下这次血的教训吧? 熟悉我的人,可能知道我的这个小站 是由 Laravel 建立的,目前我的版本变更为 Laravel 6.x 了,然后今天我发现所有客户端,...

    hedeqiang
  • 30分钟用Laravel实现一个博客

    控制器方面 app/Http/Controllers/ 我们修改一下 HomeController.php

    猿哥
  • 3分钟短文:太爽了,用Laravel写API接口!

    我们一直在讲,通过路由传达到控制器,处理好数据并渲染到视图,但是对于现代的应用, 前后端分离的情况下,后端写个接口就完事儿了。

    程序员小助手
  • 小程序入门,看这一篇就够了!

    ? 文章为实战中踩坑经历,以及解决方案。同时是自己的一个项目回顾,在这里分享给大家,希望能帮助到大家。文章内代码需要左右滑动噢~ 登录授权 授权(基本信息,手...

    腾讯NEXT学位
  • Android MIUI通知类短信权限的坑

    MIUI的坑爹设计还真不少。比如说,MIUI手机不插SIM卡就不能USB调试安装应用,好,插,结果又让你先登录小米账号(无话可说)。MIUI权限申请也是坑!

    砸漏
  • 两个非常棒的 Laravel 权限管理包推荐

    overtrue
  • old_password的锅

    最近很长时间没有更新了,思考了一个事情,关注了几十个技术类公众号,每天都有更新,基本都是大篇幅的解读某一技术,从入门到精通,有的没得写,从旧文章...

    李俊鹏

扫码关注云+社区

领取腾讯云代金券