Laravel routes.php包含使用Session的文件

时间:2015-05-08 23:55:30

标签: authentication laravel routes laravel-5

不确定这是否可行,但现在就可以了。

我要做的是包括我的" admin"路由作为单独的文件,仅当用户是管理员时(因此非管理员将获得404错误

routes.php文件

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');
});

路由-admin.php的

Route::get('admin', function() {
    return view('admin-dashboard');
});

路由-user.php的

Route::get('user', function() {
    return view('user-dashboard');
});

我要做的是避免每一个Route重复测试 因此,如果我的用户细分有10个页面,我目前需要30行专用于Auth::check()的代码(if,else和重定向,如果没有),我可以在routes.php和用户进行单一检查如果他们不属于

,我们会获得404

有没有办法在Route之外执行此检查?

2 个答案:

答案 0 :(得分:2)

也许您想先阅读documentation

Route::group(['middleware' => 'auth'], function()
{
    Route::get('/', function()
    {
        // Uses Auth Middleware
    });

    Route::get('user/profile', function()
    {
        // Uses Auth Middleware
    });

});

上面的代码完全符合您的需求,是#34;登录的用户?"让他去页面"无论如何"。

您可以自己创建中间件(检查用户是管理员还是基本用户)并应用于组。

示例middleware

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');

只需使用您要包含的路径文件名称进行复制