yuansir / laravel5-rbac-example Goto Github PK
View Code? Open in Web Editor NEWRBAC Example By Laravel5.2
RBAC Example By Laravel5.2
Installing dependencies (including require-dev) from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
Package operations: 33 installs, 0 updates, 0 removals
php artision migrate
好久后才发现是php artisan migrate
,而且之前装过一个laravel blog,数据没导入成功,新建一个库laravel5终于装好运行了,谢谢哈
能否讲一下里面用到的包的用法?
Failed to download jakub-onderka/php-console-color from dist: Your configuration does not allow connections to http://packagist.phpcomposer.com/files/JakubOnderka/PHP-Console-Color/e0b393dacf7703fc36a4efc3df1435485197e6c1.zip. See https://getcomposer.org/doc/06-config.md#secure-http for details.
Now trying to download from source
安装方法是:安装完laravel,把laravel5-rbac-example里面的文件复制过去覆盖么?
php artisan route:list
[DaveJamesMiller\Breadcrumbs\Exception]
Breadcrumb name "dashboard" has already been registered
如题,admin的Reques基类引用Validation会报错?
左边的菜单显示不正确,没有权限的也显示出来了
Downloading: Connecting... Downloading: Connecting... Downloading: Connecting... Failed to download doctrine/common from dist: Your configuration does not allow connections to http://packagist.phpcomposer.com/files/doctrine/common/a579557bc689580c19fee4e27487a67fe60defc0.zip. See https://getcomposer.org/doc/06-config.md#secure-http for details.
Now trying to download from source
Installing doctrine/common (v2.6.1)
Cloning a579557bc689580c19fee4e27487a67fe60defc0
[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process "git clone --no-checkout 'https://github.com/doctrine/common.gi
t' '/Users/qk/Code/laravel5-rbac-example/vendor/doctrine/common' && cd '/Us
ers/qk/Code/laravel5-rbac-example/vendor/doctrine/common' && git remote add
composer 'https://github.com/doctrine/common.git' && git fetch composer" e
xceeded the timeout of 300 seconds.
install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--ignore-platform-reqs] [--] []...
你路由文件中并未指明路由名前缀,为什么 Route::resource('admin_user', 'AdminUserController');
资源路由可以用 route('admin.admin_user.*')
来访问呀,我也用了命名空间和前缀,下面为我工程文件:
//web 路由文件
Route::group(['middleware' => ['web'],'prefix' => 'admin', 'namespace' => 'Admin'], function () {
//和问题无关的路由已省略
//用户管理
Route::resource('users', 'UserController');
Route::resource('roles', 'RoleController');
Route::resource('permissions', 'PermissionController');
});
//artisan route:list 命令查看路由
| | GET|HEAD | admin/users | users.index | App\Http\Controllers\Admin\UserController@index | web,auth.entrust |
| | POST | admin/users | users.store | App\Http\Controllers\Admin\UserController@store | web,auth.entrust |
| | GET|HEAD | admin/users/create | users.create | App\Http\Controllers\Admin\UserController@create | web,auth.entrust |
| | GET|HEAD | admin/users/{user} | users.show | App\Http\Controllers\Admin\UserController@show | web,auth.entrust |
| | PUT|PATCH | admin/users/{user} | users.update | App\Http\Controllers\Admin\UserController@update | web,auth.entrust |
| | DELETE | admin/users/{user} | users.destroy | App\Http\Controllers\Admin\UserController@destroy | web,auth.entrust |
| | GET|HEAD | admin/users/{user}/edit | users.edit | App\Http\Controllers\Admin\UserController@edit | web,auth.entrust |
//BaseController
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class BaseController extends Controller
{
//
public function __construct()
{
$this->middleware('auth.entrust');
}
}
?>
当我用 php artisan route:list
查看你工程 yuansir/laravel5-rbac-example/ 的路由列表时,收到如下错误:
[DaveJamesMiller\Breadcrumbs\Exception] Breadcrumb name "dashboard" has already been registered
。然后我查看了日志,如下:
[2016-11-26 16:30:30] APP_ENV=local
APP_DEBUG=true
APP_KEY=ptqZuq1sdTThZwBLeK1B9s1kJfZHatEA
DB_HOST=localhost
DB_DATABASE=laravel5-rbac-example
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=array
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=localhost
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null.ERROR: DaveJamesMiller\Breadcrumbs\Exception: Breadcrumb name "dashboard" has already been registered in /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/davejamesmiller/laravel-breadcrumbs/src/Manager.php:23
Stack trace:
#0 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/illuminate/support/Facades/Facade.php(219): DaveJamesMiller\Breadcrumbs\Manager->register('dashboard', Object(Closure))
#1 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/app/Http/Controllers/Admin/BaseController.php(18): Illuminate\Support\Facades\Facade::__callStatic('register', Array)
#2 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/app/Http/Controllers/Admin/AdminUserController.php(20): App\Http\Controllers\Admin\BaseController->__construct()
#3 [internal function]: App\Http\Controllers\Admin\AdminUserController->__construct(Object(App\Repositories\AdminUserRepositoryEloquent))
#4 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/illuminate/container/Container.php(779): ReflectionClass->newInstanceArgs(Array)
#5 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/illuminate/container/Container.php(629): Illuminate\Container\Container->build('App\\Http\\Contro...', Array)
#6 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(697): Illuminate\Container\Container->make('App\\Http\\Contro...', Array)
#7 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(165): Illuminate\Foundation\Application->make('App\\Http\\Contro...')
#8 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(146): Illuminate\Foundation\Console\RouteListCommand->getControllerMiddleware('App\\Http\\Contro...')
#9 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(118): Illuminate\Foundation\Console\RouteListCommand->getMiddleware(Object(Illuminate\Routing\Route))
#10 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(88): Illuminate\Foundation\Console\RouteListCommand->getRouteInformation(Object(Illuminate\Routing\Route))
#11 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(75): Illuminate\Foundation\Console\RouteListCommand->getRoutes()
#12 [internal function]: Illuminate\Foundation\Console\RouteListCommand->fire()
#13 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/illuminate/container/Container.php(507): call_user_func_array(Array, Array)
#14 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/illuminate/console/Command.php(169): Illuminate\Container\Container->call(Array)
#15 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/symfony/console/Command/Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/illuminate/console/Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/symfony/console/Application.php(794): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/symfony/console/Application.php(186): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Foundation\Console\RouteListCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/symfony/console/Application.php(117): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /Users/capitan/GitHub/Laravel/权限管理/laravel5-rbac-example-master/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 {main}
后面我又尝试在你工程 yuansir/laravel5-rbac-example/ 升级 composer 包,也报错了:
capitan@CapitandeMacBook-Pro ~/GitHub/Laravel/权限管理/laravel5-rbac-example-master composer update
> php artisan clear-compiled
Loading composer repositories with package information
[Composer\Downloader\TransportException]
The "https://api.github.com/repos/hiendv/entrust" file could not be downloaded (HTTP/1.1 404 Not Found)
之前第一次安装没有问题的,感觉网络问题不大,我准备换个网络好的再试试。。。
我的主要问题就是你的资源路由命名为什么可以带个前缀啊,我用的5.3版本,木有前缀,所以在权限中间件进行权限判断的时候无法正确验证路由名的问题,下面为我工程文件
<?php
namespace App\Http\Middleware;
use Closure;
use Route;
use Entrust;
class VerifyAuthRouteEntrust
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
//这是简化版,没有验证超级管理员和ajax操作请求
if (!$this->verifyAuthRouteEntrust()) {
//不能访问
dd('拦截,无权限访问');
}
return $next($request);
}
/**
* 验证当前用户是否有权限访问当前路由
* @return bool
*/
public function verifyAuthRouteEntrust()
{
$currentRouteName = Route::currentRouteName();
return Entrust::can($currentRouteName);
}
}
这个不做 5.4 的兼容了吗? controll 目录提示
访问/admin/login
Class App\Http\Controllers\Admin\Auth\LoginController does not exist
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.