jundayw/laravel-policy 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jundayw/laravel-policy

最新稳定版本:v5.0.0

Composer 安装命令:

composer require jundayw/laravel-policy

包简介

The Laravel Policy.

README 文档

README

命令行下, 执行 composer 命令安装:

composer require jundayw/laravel-policy

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

使用方法

Model

需要验证权限的 App\Models\User 继承 Jundayw\LaravelPolicy\PolicyContract, 并实现 getPolicies(string $ability, mixed $arguments) 方法,返回如下类型的权限数组

namespace App\Models;

use Jundayw\LaravelPolicy\PolicyContract;
use Jundayw\LaravelPolicy\Policy;

class Manager extends Authenticate implements PolicyContract
{
    use Policy;

    /**
     * @param string $ability
     * @param mixed $arguments
     * @return string[]
     */
    public function getPolicies(string $ability, mixed $arguments): array
    {
        // do anything for get polices
        return [
            // "backend.module.list",
            // "backend.module.create",
            // "backend.module.store",
            // "backend.module.edit",
            // "backend.module.update",
            // "backend.module.destroy",
            // "backend.policy.list",
            // "backend.policy.create",
            // "backend.policy.store",
            // "backend.policy.edit",
            // "backend.policy.update",
            // "backend.policy.destroy",
            // "backend.role.*",
            // "backend.*.*",
        ];
    }
}

使用内置中间件

控制器中使用

class AuthController extends CommonController
{
    public function __construct()
    {
        $this->middleware('policy');
    }
}

或者路由中使用

Route::middleware('policy')->group(function(){});

内置中间件验证中,若无权访问将抛出 Jundayw\LaravelPolicy\Exceptions\PolicyException 异常,注意捕获

自定义中间件

use Jundayw\LaravelPolicy\Policies\Policy;
/**
 * Handle an incoming request.
 *
 * @param Request $request
 * @param Closure $next
 * @return Response|PolicyException
 */
public function handle(Request $request, Closure $next)
{
    // 传入当前请求需要的权限标识符,可自定义任意形式
    // 如
    // admin.role.delete
    // admin/role/delete
    // admin-role-delete
    // adminRoleDelete
    // ...
    // 注意与 getPolicies 方法返回类型一致
    $policy = '';
    if ($request->user()->can($policy, [Policy::class])) {
        return $next($request);
    }
    // 自定义无权访问行为
    throw new Exception('UnAuthorized Access.');
}

调试模式

发布配置文件

php artisan vendor:publish --tag=artisan-policy-config

配置 .env 文件,追加

POLICY_ENABLED=false

配置为 false 关闭权限验证,默认为 true

统计信息

  • 总下载量: 2.21k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-07-10

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固