advanced-store / oauth2-access-filter
创建简单的访问过滤器功能。
Requires
- php: >=5.3.0
- illuminate/support: 5.0.*
This package is not auto-updated.
Last update: 2020-01-24 15:41:10 UTC
README
此作品根据Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 国际许可协议授权。
访问过滤器
此包为laravel添加功能,允许您为路由创建和使用简单的权限过滤器。
1. 安装
通过Composer
首先将以下行添加到您的 composer.json 文件中。
"advanced-store/access-filter": "dev-master"
在您的CLI中运行此命令。
composer update
2. 配置
发布包配置
如果您是首次安装,请运行以下命令。
php artisan config:publish advanced-store/access-filter
编辑配置文件 accessFilterConfig 并添加用户权限。这些可以来自您的 Sentry/User 模型,或者出于测试目的而硬编码。将来,这些将通过 ad4mat API 客户端提取。
将以下行添加到您的 app.php。
提供者
'AdvancedStore\AccessFilter\AccessFilterServiceProvider',
别名
'YourAlias' => 'AdvancedStore\AccessFilter\Facades\AccessFilterFacade',
编辑配置文件 permissionList.php 并插入您的路由名称和用户必须拥有的最内层最小权限,以便访问此路由。
我的权限命名约定是
[{SystemName}].{ApplicationName}.{Root}.{SubScope}.[0..* {SubScope}]
示例
路由名称为 "admin/users",所需权限可能是 "myApplicationName.admin.users.listAll"。配置数组将如下所示。
return [
"admin/users" => [
"myApplicationName.admin.users.listAll",
],
]
也可以设置多个同等级别的子权限。用户只需要其中之一。请注意,我更喜欢使用点命名法来命名路由。
return [
"admin.users.index" => [
"ad4mat.admin.users.read",
"ad4mat.admin.users.self",
],
]
如果用户应该有权访问 users.index 路由,但只能看到他自己的个人资料或所有用户,您可以在控制器中决定这一点。
3. 使用方法
为了检查特定的权限,例如,如果您想在侧边栏菜单中显示特定元素。
结构
YourAlias::hasPermission( permissionString )
我的代码示例
@if( AccessFilter::hasPermission('ad4mat.admin.roles.read') )
如果您想用它来保护资源/路由,那么您创建一个调用过滤方法的过滤器,并将其添加到您喜欢的任何资源/路由。
创建过滤器
O2Client 是我用来表示 oauth2-client 包的别名,它会在实际过滤器检查应用之前检查有效令牌的存在。
Route::filter('accessFilter', function(){
if( O2Client::hasValidAccessToken() == false )
return Redirect::guest('logout');
return AccessFilter::filter();
});</code>
请注意,Laravel 仅在您使用单一路由时为资源创建路由名称。如果您使用单一路由,您必须自己添加它们。这些路由将与配置数组匹配。