作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的大学毕业项目创建一个学习管理系统(最近才引入 laravel)。我设置了三个不同的角色(管理员、讲师和学生)。我创建了两个只有管理员和讲师才能访问的 View ,“用户管理”和“类(class)管理”。在每个管理员和讲师中,可以根据需要创建用户/类(class)并删除。学生无法查看或访问这些内容,以便按需要工作。为此,我创建了一个门“管理用户”,然后将其传递给中间件。
我现在已经创建了一个日历,我希望所有用户角色都可以查看它。我再次为此创建了一个门。由于我当前的中间件,当学生试图查看日历时我得到“未经授权的访问” .. 是否可以通过中间件内的另一个门?我尝试这样做但没有成功。经过多次尝试和错误尝试后,我在这里提出了一个问题,希望我能解决这个问题......我将在下面粘贴我的代码。感谢任何帮助。
AuthServiceProvider.php
public function boot()
{
$this->registerPolicies();
//User Management
Gate::define('manage-users', function($user){
return $user->hasAnyRoles(['admin', 'instructor']);
});
//Calendar
Gate::define('manage-calendar', function($event){
return $event->hasAnyRoles(['admin', 'instructor', 'student']);
});
网络.php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::namespace('Admin')->prefix('admin')->name('admin.')->middleware('can:manage-users')->group(function(){
//Users
Route::resource('/users', 'UsersController', ['except' => ['show']]);
//Courses
Route::resource('/courses', 'CoursesController', ['except' => ['show']]);
Route::get('events', 'EventsController@index')->name('events.index');
Route::post('/addEvents', 'EventsController@addEvent')->name('events.add');
});
我知道问题出在我定义的管理用户门内。我不确定该怎么做才能保护我的其他路线不受学生和教师的影响...
提前致谢:)
最佳答案
manage-users
Gate 将不允许具有 student
角色的用户通过中间件,即使 manage-calendar
Gate
我建议你重新组合路由以应用与每个路由对应的中间件:
Route::namespace('Admin')->prefix('admin')->name('admin.')->group(function(){
Route::middleware('can:manage-users')->group(function(){
Route::resource('/users', 'UsersController', ['except' => ['show']]);
Route::resource('/courses', 'CoursesController', ['except' => ['show']]);
});
Route::middleware('can:manage-calendar')->group(function(){
Route::get('events', 'EventsController@index')->name('events.index');
Route::post('/addEvents', 'EventsController@addEvent')->name('events.add');
});
});
关于laravel - 中间件如何通过多个门? (拉维尔),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60329201/
我正在使用 git clone 部署我的 Laravel 项目并使用 git pull 进行更新 它工作正常,但每次部署时,我都必须从 config/app.php providers 数组和 ali
我是一名优秀的程序员,十分优秀!