授權相關邏輯,必須 使用 授權策略類 來實現(xiàn)。
所有 Policy 授權策略類 必須 繼承 app/Policies/Policy.php
基類?;愇募缦拢?br>
<?php
namespace App\Policies;
use Illuminate\Auth\Access\HandlesAuthorization;
class Policy
{
use HandlesAuthorization;
public function __construct()
{
//
}
public function before($user, $ability)
{
if ($user->isAdmin()) {
return true;
}
}
}
Policy 授權策略類 必須 遵循 資源路由 方式進行命名,photos
對應 /app/Policies/PhotoPolicy.php
。
Policy 授權策略類文件內容請參考以下:
<?php
namespace App\Policies;
use App\Models\User;
use App\Models\Photo;
class PhotoPolicy extends Policy
{
public function update(User $user, Photo $photo)
{
return $user->isAuthorOf($photo);
}
public function destroy(User $user, Photo $photo)
{
return $user->isAuthorOf($photo);
}
}
應該 使用 自動發(fā)現(xiàn)授權策略方法,這樣控制器和授權類的方法名就統(tǒng)一起來了。
/**
* 更新指定的文章。
*
* @param int $id
* @return Response
*/
public function update($id)
{
$post = Post::findOrFail($id);
// 會自動調用 `PostPolicy` 類中的 `update` 方法。
$this->authorize($post);
// 更新文章...
}
更多建議: