laravel 07
中间件初识
- auth 登录验证中间件
// 以下方法未登录也可以访问$this->middleware('auth', ['except' => ['index', 'show', 'create', 'store']]);
- guest 游客中间件
// 只有游客可以访问注册相关方法
$this->middleware('guest', [
'only' => ['create', 'store']
]);
模型策略验证用户访问动作
本质是:验证用户可以执行那些方法。
比如: 你只能修改你个人的用户资料,不能改别人的资料。
- 执行
php artisan make:policy --model=User UserPolicy生成策略文件app/Policies/UserPolicy.php - 修改
app/Policies/UserPolicy.php对应的方法
// eg: $user: 当前登录的user信息; $model: 修改提交的数据
public function update(User $user, User $model)
{
return $user->id == $model->id;
}
- 控制器中执行验证
// eg: UserController中 模型是User, 所以执行 app/Policies/UserPolicy.php 中的 update 方法,
// 参数 $user 即为 update 方法中的 $model
public function edit(User $user)
{
$this->authorize('update', $user);
return view('user.edit', compact('user'));
}
- 5.8 之前版本 在
app/Providers/AuthServiceProvider.php模型和策略之间的关系需要显示的进行绑定
// 5.8 之前版本
protected $policies = [
// 'App\Model' => 'App\Policies\ModelPolicy',
'App\User' => UserPolicy::class,
];
