不确定这是否可行,但现在就可以了。
我要做的是包括我的" admin"路由作为单独的文件,仅当用户是管理员时(因此非管理员将获得404错误
)if( Session::get('user')->is_admin )
require_once('routes-admin.php');
if( Auth::check() )
require_once('routes-user.php');
Route::get('/', function() {
return view('home');
});
Route::get('admin', function() {
return view('admin-dashboard');
});
Route::get('user', function() {
return view('user-dashboard');
});
我要做的是避免每一个Route
重复测试
因此,如果我的用户细分有10个页面,我目前需要30行专用于Auth::check()
的代码(if,else和重定向,如果没有),我可以在routes.php
和用户进行单一检查如果他们不属于
404
有没有办法在Route
之外执行此检查?
答案 0 :(得分:2)
也许您想先阅读documentation?
Route::group(['middleware' => 'auth'], function()
{
Route::get('/', function()
{
// Uses Auth Middleware
});
Route::get('user/profile', function()
{
// Uses Auth Middleware
});
});
上面的代码完全符合您的需求,是#34;登录的用户?"让他去页面"无论如何"。
您可以自己创建中间件(检查用户是管理员还是基本用户)并应用于组。
class BeforeMiddleware implements Middleware
{
public function handle($request, Closure $next)
{
// Perform action
return $next($request);
}
}
不要误会我的意思,只是你的方法真的不像Laravel。尝试在L5甚至L4中查看一些开源项目。尝试使用泰勒已经为你做的一切。文档是你的朋友。
答案 1 :(得分:1)
根据@Kyslik对中间件的响应,你可以"包括"您的RouteServiceProvider中的自己的路由文件,如默认路由文件,RouteServiceProvide位于:app / Providers / RouteServiceProvider.php,
找到
部分require app_path('Http/routes.php');
只需使用您要包含的路径文件名称进行复制