codecamp

Laravel 8 策略方法

一旦注册了策略,您可以为它授权的每个操作添加方法。例如,让我们在 PostPolicy 上定义一个 update 方法,它确定给定的 User 是否可以更新给定的 Post 实例。

update 方法将接收一个 User 和一个 Post 实例作为参数,并应返回 truefalse,指示用户是否被授权更新给定的 Post。所以,在这个例子中,让我们验证用户的 id 是否与帖子上的 user_id 匹配:

<?php

namespace App\Policies;

use App\Models\Post;
use App\Models\User;

class PostPolicy
{
    /**
     * 确定用户是否可以更新给定的帖子
     *
     * @param  \App\Models\User  $user
     * @param  \App\Models\Post  $post
     * @return bool
     */
    public function update(User $user, Post $post)
    {
        return $user->id === $post->user_id;
    }
}

您可以根据策略授权的各种操作的需要,继续在策略上定义其他方法。例如,您可以定义 viewdelete 方法来授权各种 Post 操作,但请记住,您可以自由地为策略方法指定任何名称。

技巧:如果您在通过 Artisan 控制台生成策略时使用了 --model 选项,那么它已经包含了 viewAnyviewcreateupdatedeleterestoreforceDelete 操作的方法。

Laravel 8 编写策略
Laravel 8 策略响应
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Laravel 8 入门指南

Laravel 8 基础功能

Laravel 8 前端开发

Laravel 8 安全相关

Laravel 8 综合话题

数据库

Eloquent ORM

测试相关

官方拓展包

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }