序
说说最近我干了啥.距离上次发文章已经20天了,这段时间里我跑去海南玩了,回来就写了一周的laravel项目了。这次是第一次写,写的挺菜的,被dalao摁在地面上摩擦了,不过还好经过这次开发,我还是学到了一些东西,在这里Mark一下,方便以后差错。
Laravel Auth组件之坑
这次是第一次用auth组件来开发登录模块。由于应用的美工已经规定好了,我就直接手动认证了。
attempt()方法
文档写的是
attempt(["email"=>$email,"password"=>$password])
,这个组件是只能用email来作为username,不能自定义username。
login()方法
login组件需要传入的参数是用户实例。
啥是用户实例?
用户实例的意思是你一定查到的那一条数据,比如你通过ORM查到了一条password符合的数据,此时这条数据就是一个用户实例。
为啥跳转后Auth::check()返回值为false?
可能的原因如下:
- modal继承错误
- 中间件组件未加载
- 数据库字段错误
modal继承错误:
modal原代码:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
}
要把代码改成这样子才行!
modal改动后的代码:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;//要改成继承这个Auth组件
class User extends Authenticatable
{
}
中间件组件未加载:
Kernel原代码:
有可能是这个组件被注释了,此时需要的是取消注释。
数据库字段错误:
login方法定位用户靠的是数据库的字段名id。
这个字段名必须是id,不能是Id、iD、ID。不然Auth组件将不能够正常工作
logout方法
数据表,必须有remember_token用于存储辨识用户session的凭证。
不然laravel会报错。