【发布时间】:2016-10-09 09:19:02
【问题描述】:
我目前正在构建我的第一个 larval 应用程序。
我有两种用户类型:buyers 和 sellers。但是,它们都可以访问相同的路由,但需要为它们提供不同的模板和数据。例如,两者都可以访问/home,但看到的内容完全不同。
我知道我可以在路由中使用 if 语句,但这变得很乱。为了尝试解决这个问题,我使用两个不同的路由组制作了两个独立的中间件。每个中间件都会检查用户的权限,如果没有权限则将其注销,如下所示:
if ( Auth::user()->role !== 'buyer' ) {
return redirect( 'login' );
}
我的目标:
- 如果用户是“isBuyer”,它只会读取该中间件路由组。
- 如果用户是“isSeller”,它只会读取该中间件组。
我希望同时使用两者:
// this will be triggered if they have the role 'buyer'
Route::group(['middleware' => 'isBuyer'], function () {
Route::get( '/', function ( ) {
return view( '/home-seller' );
});
});
//this will be triggered if they have the role 'seller'
Route::group(['middleware' => 'isSeller'], function () {
Route::get( '/', function ( ) {
return view( '/home-buyer' );
});
});
但它从不读取第二组。由于第一组的身份验证测试失败,它会将我注销。
我认为这是因为它在完成读取 routes.php 文件之前应用了中间件过滤器。 为不同的用户类型使用相同的路线最好的方法是什么?
【问题讨论】:
标签: php laravel laravel-5 routes middleware