-
php教程之使用Laravel集成JWT认证开发RestfulApi(6)
让我解释下上面的代码发生了什么。
在 register 方法中,我们接收了 RegisterAuthRequest 。使用请求中的数据创建用户。如果 loginAfterSignUp 属性为 true ,则注册后通过调用 login 方法为用户登录。否则,成功的响应则将伴随用户数据一起返回。
在 login 方法中,我们得到了请求的子集,其中只包含电子邮件和密码。以输入的值作为参数调用 JWTAuth::attempt() ,响应保存在一个变量中。如果从 attempt 方法中返回 false ,则返回一个失败响应。否则,将返回一个成功的响应。
在 logout 方法中,验证请求是否包含令牌验证。通过调用 invalidate 方法使令牌无效,并返回一个成功的响应。如果捕获到 JWTException 异常,则返回一个失败的响应。
在 getAuthUser 方法中,验证请求是否包含令牌字段。然后调用 authenticate 方法,该方法返回经过身份验证的用户。最后,返回带有用户的响应。
身份验证部分现在已经完成。
构建产品部分
要创建产品部分,我们需要 Product 模型,控制器和迁移文件。运行以下命令来创建 Product 模型,控制器和迁移文件。
1
|
php artisan make:model Product -mc |
它会在 database/migrations 目录下创建一个新的数据库迁移文件 create_products_table.php,更改 up 方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public function up() { Schema::create( 'products' , function (Blueprint $table) { $table->increments( 'id' ); $table->integer( 'user_id' ); $table-> string ( 'name' ); $table->integer( 'price' ); $table->integer( 'quantity' ); $table->timestamps(); $table->foreign( 'user_id' ) ->references( 'id' ) -> on ( 'users' ) ->onDelete( 'cascade' ); }); } |
向 Product 模型中添加 fillable 属性。在 app 目录下打开 Product.php 文件并添加属性。
1
2
3
|
protected $fillable = [ 'name' , 'price' , 'quantity' ]; |
现在在 .env 文件中设置数据库凭证,并通过运行以下命令迁移数据库。
1
|
php artisan migrate |
现在,我们必须在 User 模型中添加一个关系来检索相关产品。在 app/User.php 中添加以下方法。